Scippy

SCIP

Solving Constraint Integer Programs

set.c
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2022 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file set.c
17  * @ingroup OTHER_CFILES
18  * @brief methods for global SCIP settings
19  * @author Tobias Achterberg
20  * @author Timo Berthold
21  *
22  * @todo Functions like SCIPsetFeastol() are misleading (it seems that the feasibility tolerance can be set).
23  * Rename all functions starting with SCIPsetXXX, e.g., SCIPsetGetFeastol() and SCIPsetSetFeastol().
24  */
25 
26 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
27 
28 #include <assert.h>
29 #include <string.h>
30 #include <math.h>
31 
32 #include "scip/def.h"
33 #include "scip/set.h"
34 #include "scip/stat.h"
35 #include "scip/clock.h"
36 #include "scip/event.h"
37 #include "scip/lp.h"
38 #include "scip/paramset.h"
39 #include "scip/scip.h"
40 #include "scip/bandit.h"
41 #include "scip/branch.h"
42 #include "scip/conflict.h"
43 #include "scip/cons.h"
44 #include "scip/disp.h"
45 #include "scip/dialog.h"
46 #include "scip/heur.h"
47 #include "scip/concsolver.h"
48 #include "scip/compr.h"
49 #include "scip/nodesel.h"
50 #include "scip/presol.h"
51 #include "scip/pricer.h"
52 #include "scip/reader.h"
53 #include "scip/relax.h"
54 #include "scip/sepa.h"
55 #include "scip/cutsel.h"
56 #include "scip/table.h"
57 #include "scip/prop.h"
58 #include "scip/benders.h"
59 #include "scip/expr.h"
60 #include "scip/nlpi.h"
61 #include "scip/pub_nlpi.h"
62 #include "scip/struct_scip.h" /* for SCIPsetPrintDebugMessage() */
63 
64 /*
65  * Default settings
66  */
67 
68 
69 /* Branching */
70 
71 #define SCIP_DEFAULT_BRANCH_SCOREFUNC 'p' /**< branching score function ('s'um, 'p'roduct) */
72 #define SCIP_DEFAULT_BRANCH_SCOREFAC 0.167 /**< branching score factor to weigh downward and upward gain prediction
73  * in sum score function */
74 #define SCIP_DEFAULT_BRANCH_PREFERBINARY FALSE /**< should branching on binary variables be preferred? */
75 #define SCIP_DEFAULT_BRANCH_CLAMP 0.2 /**< minimal fractional distance of branching point to a continuous variable'
76  * bounds; a value of 0.5 leads to branching always in the middle of a bounded domain */
77 #define SCIP_DEFAULT_BRANCH_MIDPULL 0.75 /**< fraction by which to move branching point of a continuous variable towards the middle of the domain */
78 #define SCIP_DEFAULT_BRANCH_MIDPULLRELDOMTRIG 0.5 /**< multiply midpull by relative domain width if the latter is below this value */
79 #define SCIP_DEFAULT_BRANCH_LPGAINNORMALIZE 's' /**< strategy for normalizing LP gain when updating pseudo costs of continuous variables */
80 #define SCIP_DEFAULT_BRANCH_DELAYPSCOST TRUE /**< should updating pseudo costs of continuous variables be delayed to after separation */
81 #define SCIP_DEFAULT_BRANCH_DIVINGPSCOST TRUE /**< should pseudo costs be updated also in diving and probing mode? */
82 #define SCIP_DEFAULT_BRANCH_FORCEALL FALSE /**< should all strong branching children be regarded even if
83  * one is detected to be infeasible? (only with propagation) */
84 #define SCIP_DEFAULT_BRANCH_FIRSTSBCHILD 'a' /**< child node to be regarded first during strong branching (only with propagation): 'u'p child, 'd'own child, 'h'istory-based, or 'a'utomatic */
85 #define SCIP_DEFAULT_BRANCH_CHECKSBSOL TRUE /**< should LP solutions during strong branching with propagation be checked for feasibility? */
86 #define SCIP_DEFAULT_BRANCH_ROUNDSBSOL TRUE /**< should LP solutions during strong branching with propagation be rounded? (only when checksbsol=TRUE) */
87 #define SCIP_DEFAULT_BRANCH_SUMADJUSTSCORE FALSE /**< score adjustment near zero by adding epsilon (TRUE) or using maximum (FALSE) */
88 
89 /* Tree Compression */
90 
91 #define SCIP_DEFAULT_COMPR_ENABLE FALSE /**< should automatic tree compression in reoptimization after presolving be enabled? */
92 
93 
94 /* Conflict Analysis (general) */
95 
96 #define SCIP_DEFAULT_CONF_ENABLE TRUE /**< conflict analysis be enabled? */
97 #define SCIP_DEFAULT_CONF_MAXVARSFAC 0.15 /**< maximal fraction of variables involved in a conflict constraint */
98 #define SCIP_DEFAULT_CONF_MINMAXVARS 0 /**< minimal absolute maximum of variables involved in a conflict constraint */
99 #define SCIP_DEFAULT_CONF_MAXLPLOOPS 2 /**< maximal number of LP resolving loops during conflict analysis
100  * (-1: no limit) */
101 #define SCIP_DEFAULT_CONF_LPITERATIONS 10 /**< maximal number of LP iterations in each LP resolving loop
102  * (-1: no limit) */
103 #define SCIP_DEFAULT_CONF_USEPROP TRUE /**< should propagation conflict analysis be used? */
104 #define SCIP_DEFAULT_CONF_USEINFLP 'b' /**< should infeasible LP conflict analysis be used?
105  * ('o'ff, 'c'onflict graph, 'd'ual ray, 'b'oth conflict graph and dual ray)
106  */
107 #define SCIP_DEFAULT_CONF_USEBOUNDLP 'b' /**< should bound exceeding LP conflict analysis be used?
108  * ('o'ff, 'c'onflict graph, 'd'ual ray, 'b'oth conflict graph and dual solution)
109  */
110 #define SCIP_DEFAULT_CONF_USESB TRUE /**< should infeasible/bound exceeding strong branching conflict analysis
111  * be used? */
112 #define SCIP_DEFAULT_CONF_USEPSEUDO TRUE /**< should pseudo solution conflict analysis be used? */
113 #define SCIP_DEFAULT_CONF_PREFINFPROOF TRUE /**< prefer infeasibility proof to boundexceeding proof */
114 #define SCIP_DEFAULT_CONF_SEPARATE TRUE /**< should the conflict constraints be separated? */
115 #define SCIP_DEFAULT_CONF_DYNAMIC TRUE /**< should the conflict constraints be subject to aging? */
116 
117 
118 /* Conflict Analysis (conflict graph) */
120 #define SCIP_DEFAULT_CONF_MAXSTORESIZE 10000 /**< maximal size of the conflict pool */
121 #define SCIP_DEFAULT_CONF_RECONVLEVELS -1 /**< number of depth levels up to which UIP reconvergence constraints are
122  * generated (-1: generate reconvergence constraints in all depth levels) */
123 #define SCIP_DEFAULT_CONF_CLEANBNDDEPEND TRUE /**< should conflicts based on an old cutoff bound removed? */
124 #define SCIP_DEFAULT_CONF_FUIPLEVELS -1 /**< number of depth levels up to which first UIP's are used in conflict
125  * analysis (-1: use All-FirstUIP rule) */
126 #define SCIP_DEFAULT_CONF_INTERCONSS -1 /**< maximal number of intermediate conflict constraints generated in
127  * conflict graph (-1: use every intermediate constraint) */
128 #define SCIP_DEFAULT_CONF_MAXCONSS 10 /**< maximal number of conflict constraints accepted at an infeasible node
129  * (-1: use all generated conflict constraints) */
130 #define SCIP_DEFAULT_CONF_PREFERBINARY FALSE /**< should binary conflicts be preferred? */
131 #define SCIP_DEFAULT_CONF_ALLOWLOCAL TRUE /**< should conflict constraints be generated that are only valid locally? */
132 #define SCIP_DEFAULT_CONF_SETTLELOCAL FALSE /**< should conflict constraints be attached only to the local subtree
133  * where they can be useful? */
134 #define SCIP_DEFAULT_CONF_REPROPAGATE TRUE /**< should earlier nodes be repropagated in order to replace branching
135  * decisions by deductions? */
136 #define SCIP_DEFAULT_CONF_KEEPREPROP TRUE /**< should constraints be kept for repropagation even if they are too long? */
137 #define SCIP_DEFAULT_CONF_REMOVEABLE TRUE /**< should the conflict's relaxations be subject to LP aging and cleanup? */
138 #define SCIP_DEFAULT_CONF_DEPTHSCOREFAC 1.0 /**< score factor for depth level in bound relaxation heuristic of LP analysis */
139 #define SCIP_DEFAULT_CONF_PROOFSCOREFAC 1.0 /**< score factor for impact on acticity in bound relaxation heuristic of LP analysis */
140 #define SCIP_DEFAULT_CONF_UPLOCKSCOREFAC 0.0 /**< score factor for up locks in bound relaxation heuristic of LP analysis */
141 #define SCIP_DEFAULT_CONF_DOWNLOCKSCOREFAC 0.0 /**< score factor for down locks in bound relaxation heuristic of LP analysis */
142 #define SCIP_DEFAULT_CONF_SCOREFAC 0.98 /**< factor to decrease importance of variables' earlier conflict scores */
143 #define SCIP_DEFAULT_CONF_RESTARTNUM 0 /**< number of successful conflict analysis calls that trigger a restart
144  * (0: disable conflict restarts) */
145 #define SCIP_DEFAULT_CONF_RESTARTFAC 1.5 /**< factor to increase restartnum with after each restart */
146 #define SCIP_DEFAULT_CONF_IGNORERELAXEDBD FALSE /**< should relaxed bounds be ignored? */
147 #define SCIP_DEFAULT_CONF_MAXVARSDETECTIMPLIEDBOUNDS 250 /**< maximal number of variables to try to detect global bound implications and shorten the whole conflict set (0: disabled) */
148 #define SCIP_DEFAULT_CONF_FULLSHORTENCONFLICT TRUE /**< try to shorten the whole conflict set or terminate early (depending on the 'maxvarsdetectimpliedbounds' parameter) */
149 #define SCIP_DEFAULT_CONF_CONFLITWEIGHT 0.0 /**< the weight the VSIDS score is weight by updating the VSIDS for a variable if it is part of a conflict */
150 #define SCIP_DEFAULT_CONF_CONFLITGRAPHWEIGHT 1.0/**< the weight the VSIDS score is weight by updating the VSIDS for a variable if it is part of a conflict graph */
151 #define SCIP_DEFAULT_CONF_WEIGHTSIZE 0.001 /**< weight of the size of a conflict used in score calculation */
152 #define SCIP_DEFAULT_CONF_WEIGHTREPROPDEPTH 0.1 /**< weight of the repropagation depth of a conflict used in score calculation */
153 #define SCIP_DEFAULT_CONF_WEIGHTVALIDDEPTH 1.0 /**< weight of the valid depth of a conflict used in score calculation */
154 #define SCIP_DEFAULT_CONF_MINIMPROVE 0.05 /**< minimal improvement of primal bound to remove conflicts based on a previous incumbent */
156 /* Conflict Analysis (dual ray) */
158 #define SCIP_DEFAULT_CONF_SEPAALTPROOFS FALSE /**< apply cut generating functions to construct alternative proofs */
159 #define SCIP_DEFAULT_CONF_USELOCALROWS TRUE /**< use local rows to construct infeasibility proofs */
160 
161 /* Constraints */
163 #define SCIP_DEFAULT_CONS_AGELIMIT 0 /**< maximum age an unnecessary constraint can reach before it is deleted
164  * (0: dynamic adjustment, -1: constraints are never deleted) */
165 #define SCIP_DEFAULT_CONS_OBSOLETEAGE -1 /**< age of a constraint after which it is marked obsolete
166  * (0: dynamic adjustment, -1: constraints are never marked obsolete) */
167 #define SCIP_DEFAULT_CONS_DISABLEENFOPS FALSE /**< should enforcement of pseudo solution be disabled? */
170 /* Display */
172 #define SCIP_DEFAULT_DISP_VERBLEVEL SCIP_VERBLEVEL_HIGH /**< verbosity level of output */
173 #define SCIP_DEFAULT_DISP_WIDTH 143 /**< maximal number of characters in a node information line */
174 #define SCIP_DEFAULT_DISP_FREQ 100 /**< frequency for displaying node information lines */
175 #define SCIP_DEFAULT_DISP_HEADERFREQ 15 /**< frequency for displaying header lines (every n'th node info line) */
176 #define SCIP_DEFAULT_DISP_LPINFO FALSE /**< should the LP solver display status messages? */
177 #define SCIP_DEFAULT_DISP_ALLVIOLS FALSE /**< display all violations of the best solution after the solving process finished? */
178 #define SCIP_DEFAULT_DISP_RELEVANTSTATS TRUE /**< should the relevant statistics be displayed at the end of solving? */
179 
180 /* Heuristics */
181 
182 #define SCIP_DEFAULT_HEUR_USEUCTSUBSCIP FALSE /**< should setting of common subscip parameters include the activation of the UCT node selector? */
184 /* History */
185 
186 #define SCIP_DEFAULT_HISTORY_VALUEBASED FALSE /**< should statistics be collected for variable domain value pairs */
187 #define SCIP_DEFAULT_HISTORY_ALLOWMERGE FALSE /**< should variable histories be merged from sub-SCIPs whenever possible? */
188 #define SCIP_DEFAULT_HISTORY_ALLOWTRANSFER FALSE /**< should variable histories be transferred to initialize SCIP copies? */
189 
190 /* Limits */
192 #define SCIP_DEFAULT_LIMIT_TIME 1e+20 /**< maximal time in seconds to run */
193 #define SCIP_DEFAULT_LIMIT_MEMORY SCIP_MEM_NOLIMIT/**< maximal memory usage in MB */
194 #define SCIP_DEFAULT_LIMIT_GAP 0.0 /**< solving stops, if the gap is below the given value */
195 #define SCIP_DEFAULT_LIMIT_ABSGAP 0.0 /**< solving stops, if the absolute difference between primal and dual
196  * bound reaches this value */
197 #define SCIP_DEFAULT_LIMIT_NODES -1LL /**< maximal number of nodes to process (-1: no limit) */
198 #define SCIP_DEFAULT_LIMIT_STALLNODES -1LL /**< solving stops, if the given number of nodes was processed since the
199  * last improvement of the primal solution value (-1: no limit) */
200 #define SCIP_DEFAULT_LIMIT_SOLUTIONS -1 /**< solving stops, if given number of sols were found (-1: no limit) */
201 #define SCIP_DEFAULT_LIMIT_BESTSOL -1 /**< solving stops, if given number of solution improvements were found
202  * (-1: no limit) */
203 #define SCIP_DEFAULT_LIMIT_MAXSOL 100 /**< maximal number of solutions to store in the solution storage */
204 #define SCIP_DEFAULT_LIMIT_MAXORIGSOL 10 /**< maximal number of solutions candidates to store in the solution storage of the original problem */
205 #define SCIP_DEFAULT_LIMIT_RESTARTS -1 /**< solving stops, if the given number of restarts was triggered (-1: no limit) */
206 #define SCIP_DEFAULT_LIMIT_AUTORESTARTNODES -1 /**< if solve exceeds this number of nodes, an automatic restart is triggered (-1: no automatic restart)*/
208 
209 /* LP */
210 
211 #define SCIP_DEFAULT_LP_SOLVEFREQ 1 /**< frequency for solving LP at the nodes; -1: never; 0: only root LP */
212 #define SCIP_DEFAULT_LP_ITERLIM -1LL /**< iteration limit for each single LP solve; -1: no limit */
213 #define SCIP_DEFAULT_LP_ROOTITERLIM -1LL /**< iteration limit for initial root LP solve; -1: no limit */
214 #define SCIP_DEFAULT_LP_SOLVEDEPTH -1 /**< maximal depth for solving LPs (-1: no depth limit) */
215 #define SCIP_DEFAULT_LP_INITALGORITHM 's' /**< LP algorithm for solving initial LP relaxations ('s'implex, 'b'arrier,
216  * barrier with 'c'rossover) */
217 #define SCIP_DEFAULT_LP_RESOLVEALGORITHM 's' /**< LP algorithm for resolving LP relaxations if a starting basis exists
218  * ('s'implex, 'b'arrier, barrier with 'c'rossover) */
219 #define SCIP_DEFAULT_LP_PRICING 'l' /**< LP pricing strategy ('l'pi default, 'a'uto, 'f'ull pricing, 'p'artial,
220  * 's'teepest edge pricing, 'q'uickstart steepest edge pricing,
221  * 'd'evex pricing) */
222 #define SCIP_DEFAULT_LP_CLEARINITIALPROBINGLP TRUE/**< should lp state be cleared at the end of probing mode when lp
223  * was initially unsolved, e.g., when called right after presolving? */
224 #define SCIP_DEFAULT_LP_RESOLVERESTORE FALSE /**< should the LP be resolved to restore the state at start of diving (if FALSE we buffer the solution values)? */
225 #define SCIP_DEFAULT_LP_FREESOLVALBUFFERS FALSE /**< should the buffers for storing LP solution values during diving be freed at end of diving? */
226 #define SCIP_DEFAULT_LP_COLAGELIMIT 10 /**< maximum age a dynamic column can reach before it is deleted from SCIP_LP
227  * (-1: don't delete columns due to aging) */
228 #define SCIP_DEFAULT_LP_ROWAGELIMIT 10 /**< maximum age a dynamic row can reach before it is deleted from SCIP_LP
229  * (-1: don't delete rows due to aging) */
230 #define SCIP_DEFAULT_LP_CLEANUPCOLS FALSE /**< should new non-basic columns be removed after LP solving? */
231 #define SCIP_DEFAULT_LP_CLEANUPCOLSROOT FALSE /**< should new non-basic columns be removed after root LP solving? */
232 #define SCIP_DEFAULT_LP_CLEANUPROWS TRUE /**< should new basic rows be removed after LP solving? */
233 #define SCIP_DEFAULT_LP_CLEANUPROWSROOT TRUE /**< should new basic rows be removed after root LP solving? */
234 #define SCIP_DEFAULT_LP_CHECKSTABILITY TRUE /**< should LP solver's return status be checked for stability? */
235 #define SCIP_DEFAULT_LP_CONDITIONLIMIT -1.0 /**< maximum condition number of LP basis counted as stable (-1.0: no limit) */
236 #define SCIP_DEFAULT_LP_MARKOWITZ 0.01 /**< minimal Markowitz threshold to control sparsity/stability in LU factorization */
237 #define SCIP_DEFAULT_LP_CHECKPRIMFEAS TRUE /**< should LP solutions be checked for primal feasibility to resolve LP at numerical troubles? */
238 #define SCIP_DEFAULT_LP_CHECKDUALFEAS TRUE /**< should LP solutions be checked for dual feasibility to resolve LP at numerical troubles? */
239 #define SCIP_DEFAULT_LP_CHECKFARKAS TRUE /**< should infeasibility proofs from the LP be checked? */
240 #define SCIP_DEFAULT_LP_FASTMIP 1 /**< should FASTMIP setting of LP solver be used? */
241 #define SCIP_DEFAULT_LP_SCALING 1 /**< LP scaling (0: none, 1: normal, 2: aggressive) */
242 #define SCIP_DEFAULT_LP_PRESOLVING TRUE /**< should presolving of LP solver be used? */
243 #define SCIP_DEFAULT_LP_LEXDUALALGO FALSE /**< should the dual lexicographic algorithm be used? */
244 #define SCIP_DEFAULT_LP_LEXDUALROOTONLY TRUE /**< should the lexicographic dual algorithm be applied only at the root node */
245 #define SCIP_DEFAULT_LP_LEXDUALMAXROUNDS 2 /**< maximum number of rounds in the dual lexicographic algorithm */
246 #define SCIP_DEFAULT_LP_LEXDUALBASIC FALSE /**< choose fractional basic variables in lexicographic dual algorithm */
247 #define SCIP_DEFAULT_LP_LEXDUALSTALLING TRUE /**< turn on the lex dual algorithm only when stalling? */
248 #define SCIP_DEFAULT_LP_DISABLECUTOFF 2 /**< disable the cutoff bound in the LP solver? (0: enabled, 1: disabled, 2: auto) */
249 #define SCIP_DEFAULT_LP_ROWREPSWITCH 1.2 /**< simplex algorithm shall use row representation of the basis
250  * if number of rows divided by number of columns exceeds this value */
251 #define SCIP_DEFAULT_LP_THREADS 0 /**< number of threads used for solving the LP (0: automatic) */
252 #define SCIP_DEFAULT_LP_RESOLVEITERFAC -1.0 /**< factor of average LP iterations that is used as LP iteration limit
253  * for LP resolve (-1.0: unlimited) */
254 #define SCIP_DEFAULT_LP_RESOLVEITERMIN 1000 /**< minimum number of iterations that are allowed for LP resolve */
255 #define SCIP_DEFAULT_LP_SOLUTIONPOLISHING 3 /**< LP solution polishing method (0: disabled, 1: only root, 2: always, 3: auto) */
256 #define SCIP_DEFAULT_LP_REFACTORINTERVAL 0 /**< LP refactorization interval (0: automatic) */
257 #define SCIP_DEFAULT_LP_ALWAYSGETDUALS FALSE /**< should the dual solution always be collected */
258 
259 /* NLP */
261 #define SCIP_DEFAULT_NLP_SOLVER "" /**< name of NLP solver to use, or "" if solver should be chosen by priority */
262 #define SCIP_DEFAULT_NLP_DISABLE FALSE /**< should the NLP be always disabled? */
265 /* Memory */
267 #define SCIP_DEFAULT_MEM_SAVEFAC 0.8 /**< fraction of maximal mem usage when switching to memory saving mode */
268 #define SCIP_DEFAULT_MEM_TREEGROWFAC 2.0 /**< memory growing factor for tree array */
269 #define SCIP_DEFAULT_MEM_PATHGROWFAC 2.0 /**< memory growing factor for path array */
270 #define SCIP_DEFAULT_MEM_TREEGROWINIT 65536 /**< initial size of tree array */
271 #define SCIP_DEFAULT_MEM_PATHGROWINIT 256 /**< initial size of path array */
274 /* Miscellaneous */
276 #define SCIP_DEFAULT_MISC_CATCHCTRLC TRUE /**< should the CTRL-C interrupt be caught by SCIP? */
277 #define SCIP_DEFAULT_MISC_USEVARTABLE TRUE /**< should a hashtable be used to map from variable names to variables? */
278 #define SCIP_DEFAULT_MISC_USECONSTABLE TRUE /**< should a hashtable be used to map from constraint names to constraints? */
279 #define SCIP_DEFAULT_MISC_USESMALLTABLES FALSE /**< should smaller hashtables be used? yields better performance for small problems with about 100 variables */
280 #define SCIP_DEFAULT_MISC_EXACTSOLVE FALSE /**< should the problem be solved exactly (with proven dual bounds)? */
281 #define SCIP_DEFAULT_MISC_RESETSTAT TRUE /**< should the statistics be reset if the transformed problem is
282  * freed otherwise the statistics get reset after original problem is
283  * freed (in case of Benders' decomposition this parameter should be set
284  * to FALSE and therefore can be used to collect statistics over all
285  * runs) */
286 #define SCIP_DEFAULT_MISC_IMPROVINGSOLS FALSE /**< should only solutions be checked which improve the primal bound */
287 #define SCIP_DEFAULT_MISC_PRINTREASON TRUE /**< should the reason be printed if a given start solution is infeasible? */
288 #define SCIP_DEFAULT_MISC_ESTIMEXTERNMEM TRUE /**< should the usage of external memory be estimated? */
289 #define SCIP_DEFAULT_MISC_AVOIDMEMOUT TRUE /**< try to avoid running into memory limit by restricting plugins like heuristics? */
290 #define SCIP_DEFAULT_MISC_TRANSORIGSOLS TRUE /**< should SCIP try to transfer original solutions to the transformed space (after presolving)? */
291 #define SCIP_DEFAULT_MISC_TRANSSOLSORIG TRUE /**< should SCIP try to transfer transformed solutions to the original space (after solving)? */
292 #define SCIP_DEFAULT_MISC_CALCINTEGRAL TRUE /**< should SCIP calculate the primal dual integral? */
293 #define SCIP_DEFAULT_MISC_FINITESOLSTORE FALSE /**< should SCIP try to remove infinite fixings from solutions copied to the solution store? */
294 #define SCIP_DEFAULT_MISC_OUTPUTORIGSOL TRUE /**< should the best solution be transformed to the orignal space and be output in command line run? */
295 #define SCIP_DEFAULT_MISC_ALLOWSTRONGDUALREDS TRUE /**< should strong dual reductions be allowed in propagation and presolving? */
296 #define SCIP_DEFAULT_MISC_ALLOWWEAKDUALREDS TRUE /**< should weak dual reductions be allowed in propagation and presolving? */
297 #define SCIP_DEFAULT_MISC_REFERENCEVALUE 1e99 /**< objective value for reference purposes */
298 #define SCIP_DEFAULT_MISC_USESYMMETRY 7 /**< bitset describing used symmetry handling technique (0: off; 1: polyhedral (orbitopes and/or symresacks)
299  * 2: orbital fixing; 3: orbitopes and orbital fixing; 4: Schreier Sims cuts; 5: Schreier Sims cuts and
300  * orbitopes); 6: Schreier Sims cuts and orbital fixing; 7: Schreier Sims cuts, orbitopes, and orbital
301  * fixing, see type_symmetry.h */
302 #define SCIP_DEFAULT_MISC_SCALEOBJ TRUE /**< should the objective function be scaled? */
303 #define SCIP_DEFAULT_MISC_SHOWDIVINGSTATS FALSE /**< should detailed statistics for diving heuristics be shown? */
304 
305 #ifdef WITH_DEBUG_SOLUTION
306 #define SCIP_DEFAULT_MISC_DEBUGSOLUTION "-" /**< path to a debug solution */
307 #endif
309 /* Randomization */
310 #define SCIP_DEFAULT_RANDOM_RANDSEEDSHIFT 0 /**< global shift of all random seeds in the plugins, this will have no impact on the permutation and LP seeds */
311 #define SCIP_DEFAULT_RANDOM_PERMUTATIONSEED 0 /**< seed value for permuting the problem after reading/transformation (0: no permutation) */
312 #define SCIP_DEFAULT_RANDOM_LPSEED 0 /**< random seed for LP solver, e.g. for perturbations in the simplex (0: LP default) */
313 #define SCIP_DEFAULT_RANDOM_PERMUTECONSS TRUE /**< should order of constraints be permuted (depends on permutationseed)? */
314 #define SCIP_DEFAULT_RANDOM_PERMUTEVARS FALSE /**< should order of variables be permuted (depends on permutationseed)? */
315 
316 
317 /* Node Selection */
318 
319 #define SCIP_DEFAULT_NODESEL_CHILDSEL 'h' /**< child selection rule ('d'own, 'u'p, 'p'seudo costs, 'i'nference, 'l'p value,
320  * 'r'oot LP value difference, 'h'brid inference/root LP value difference) */
323 /* Presolving */
325 #define SCIP_DEFAULT_PRESOL_ABORTFAC 8e-04 /**< abort presolve, if at most this fraction of the problem was changed
326  * in last presolve round */
327 #define SCIP_DEFAULT_PRESOL_MAXROUNDS -1 /**< maximal number of presolving rounds (-1: unlimited, 0: off) */
328 #define SCIP_DEFAULT_PRESOL_MAXRESTARTS -1 /**< maximal number of restarts (-1: unlimited) */
329 #define SCIP_DEFAULT_PRESOL_CLQTABLEFAC 2.0 /**< limit on number of entries in clique table relative to number of problem nonzeros */
330 #define SCIP_DEFAULT_PRESOL_RESTARTFAC 0.025 /**< fraction of integer variables that were fixed in the root node
331  * triggering a restart with preprocessing after root node evaluation */
332 #define SCIP_DEFAULT_PRESOL_IMMRESTARTFAC 0.10 /**< fraction of integer variables that were fixed in the root node triggering an
333  * immediate restart with preprocessing */
334 #define SCIP_DEFAULT_PRESOL_SUBRESTARTFAC 1.00 /**< fraction of integer variables that were globally fixed during the
335  * solving process triggering a restart with preprocessing */
336 #define SCIP_DEFAULT_PRESOL_RESTARTMINRED 0.10 /**< minimal fraction of integer variables removed after restart to allow
337  * for an additional restart */
338 #define SCIP_DEFAULT_PRESOL_DONOTMULTAGGR FALSE /**< should multi-aggregation of variables be forbidden? */
339 #define SCIP_DEFAULT_PRESOL_DONOTAGGR FALSE /**< should aggregation of variables be forbidden? */
342 /* Pricing */
343 
344 #define SCIP_DEFAULT_PRICE_ABORTFAC 2.0 /**< pricing is aborted, if fac * price_maxvars pricing candidates were
345  * found */
346 #define SCIP_DEFAULT_PRICE_MAXVARS 100 /**< maximal number of variables priced in per pricing round */
347 #define SCIP_DEFAULT_PRICE_MAXVARSROOT 2000 /**< maximal number of priced variables at the root node */
348 #define SCIP_DEFAULT_PRICE_DELVARS FALSE /**< should variables created at the current node be deleted when the node is solved
349  * in case they are not present in the LP anymore? */
350 #define SCIP_DEFAULT_PRICE_DELVARSROOT FALSE /**< should variables created at the root node be deleted when the root is solved
351  * in case they are not present in the LP anymore? */
353 /* Decomposition */
354 #define SCIP_DEFAULT_DECOMP_BENDERSLABELS FALSE /**< should the variables be labelled for the application of Benders' decomposition */
355 #define SCIP_DEFAULT_DECOMP_APPLYBENDERS FALSE /**< if a decomposition exists, should Benders' decomposition be applied? */
356 #define SCIP_DEFAULT_DECOMP_MAXGRAPHEDGE 10000 /**< maximum number of edges in block graph computation (-1: no limit, 0: disable block graph computation) */
357 #define SCIP_DEFAULT_DECOMP_DISABLEMEASURES FALSE /**< disable expensive measures */
358 
359 /* Benders' decomposition */
360 #define SCIP_DEFAULT_BENDERS_SOLTOL 1e-6 /**< the tolerance used to determine optimality in Benders' decomposition */
361 #define SCIP_DEFAULT_BENDERS_CUTLPSOL TRUE /**< should Benders' cuts be generated from the LP solution? */
362 #define SCIP_DEFAULT_BENDERS_COPYBENDERS TRUE /**< should Benders' decomposition be copied for sub-SCIPs? */
363 
364 /* Reoptimization */
365 
366 #define SCIP_DEFAULT_REOPT_OBJSIMSOL -1.0 /**< re-use stored solutions only if the similarity of the new and the old objective
367  function is greater or equal than this value */
368 #define SCIP_DEFAULT_REOPT_OBJSIMROOTLP 0.8 /**< similarity of two sequential objective function to disable solving the root LP. */
369 #define SCIP_DEFAULT_REOPT_OBJSIMDELAY -1.0 /**< start reoptimizing the search if the new objective function has similarity of
370  * at least SCIP_DEFAULT_REOPT_DELAY w.r.t. the previous objective function. */
371 #define SCIP_DEFAULT_REOPT_VARORDERINTERDICTION 'd' /** use 'd'efault, 'r'andom or 'i'nference score for variable
372  * ordering when performing interdiction branching during
373  * reoptimization of nodes
374  */
375 #define SCIP_DEFAULT_REOPT_MAXSAVEDNODES INT_MAX/**< maximum number of saved nodes */
376 #define SCIP_DEFAULT_REOPT_MAXDIFFOFNODES INT_MAX/**< maximum number of bound changes of two ancestor nodes
377  * such that the path get not shrunk */
378 #define SCIP_DEFAULT_REOPT_FORCEHEURRESTART 3 /**< force a restart if the last n optimal solutions are found by
379  * reoptsols heuristic
380  */
381 #define SCIP_DEFAULT_REOPT_SAVESOLS INT_MAX/**< save n best solutions found so far. */
382 #define SCIP_DEFAULT_REOPT_SOLVELP 1 /**< strategy for solving the LP at nodes from reoptimization */
383 #define SCIP_DEFAULT_REOPT_SOLVELPDIFF 1 /**< difference of path length between two ancestor nodes to solve the LP */
384 #define SCIP_DEFAULT_REOPT_ENABLE FALSE /**< enable reoptimization */
385 #define SCIP_DEFAULT_REOPT_SEPAGLBINFSUBTREES TRUE/**< save global constraints to separate infeasible subtrees */
386 #define SCIP_DEFAULT_REOPT_SEPABESTSOL FALSE /**< separate the optimal solution, e.g., for solving constraint shortest
387  * path problems
388  */
389 #define SCIP_DEFAULT_REOPT_STOREVARHISTOTY FALSE/**< use the variable history of the previous solve if the objective
390  * function has changed only slightly
391  */
392 #define SCIP_DEFAULT_REOPT_USEPSCOST FALSE /**< re-use pseudo costs of the objective function changed only slightly */
393 #define SCIP_DEFAULT_REOPT_COMMONTIMELIMIT FALSE/**< is the given time limit for all reoptimization round? */
394 #define SCIP_DEFAULT_REOPT_SHRINKINNER TRUE /**< replace branched transit nodes by their child nodes, if the number
395  * of bound changes is not to large
396  */
397 #define SCIP_DEFAULT_REOPT_STRONGBRANCHINIT TRUE/**< try to fix variables before reoptimizing by probing like strong
398  * branching
399  */
400 #define SCIP_DEFAULT_REOPT_REDUCETOFRONTIER TRUE/**< delete stored nodes which were not reoptimized */
401 #define SCIP_DEFAULT_REOPT_SAVECONSPROP FALSE/**< save constraint propagation */
402 #define SCIP_DEFAULT_REOPT_USESPLITCONS TRUE /**< use constraints to reconstruct the subtree pruned be dual reduction
403  * when reactivating the node
404  */
405 #define SCIP_DEFAULT_REOPT_USECUTS FALSE /**< reoptimize cuts found at the root node */
406 #define SCIP_DEFAULT_REOPT_MAXCUTAGE 0 /**< maximal age of a cut to be use for reoptimization */
408 /* Propagating */
410 #define SCIP_DEFAULT_PROP_MAXROUNDS 100 /**< maximal number of propagation rounds per node (-1: unlimited) */
411 #define SCIP_DEFAULT_PROP_MAXROUNDSROOT 1000 /**< maximal number of propagation rounds in root node (-1: unlimited) */
412 #define SCIP_DEFAULT_PROP_ABORTONCUTOFF TRUE /**< should propagation be aborted immediately? setting this to FALSE could
413  * help conflict analysis to produce more conflict constraints */
414 
415 
416 /* Separation */
418 #define SCIP_DEFAULT_SEPA_MAXBOUNDDIST 1.0 /**< maximal relative distance from current node's dual bound to primal
419  * bound compared to best node's dual bound for applying separation
420  * (0.0: only on current best node, 1.0: on all nodes) */
421 #define SCIP_DEFAULT_SEPA_MAXLOCALBOUNDDIST 0.0 /**< maximal relative distance from current node's dual bound to primal
422  * bound compared to best node's dual bound for applying local separation
423  * (0.0: only on current best node, 1.0: on all nodes) */
424 #define SCIP_DEFAULT_SEPA_MAXCOEFRATIO 1e+4 /**< maximal ratio between coefficients in strongcg, cmir, and flowcover cuts */
425 #define SCIP_DEFAULT_SEPA_MAXCOEFRATIOFACROWPREP 10.0 /**< maximal ratio between coefficients (as factor of 1/feastol) to ensure in rowprep cleanup */
426 #define SCIP_DEFAULT_SEPA_MINEFFICACY 1e-4 /**< minimal efficacy for a cut to enter the LP */
427 #define SCIP_DEFAULT_SEPA_MINEFFICACYROOT 1e-4 /**< minimal efficacy for a cut to enter the LP in the root node */
428 #define SCIP_DEFAULT_SEPA_ORTHOFUNC 'e' /**< function used for calc. scalar prod. in orthogonality test ('e'uclidean, 'd'iscrete) */
429 #define SCIP_DEFAULT_SEPA_EFFICACYNORM 'e' /**< row norm to use for efficacy calculation ('e'uclidean, 'm'aximum,
430  * 's'um, 'd'iscrete) */
431 #define SCIP_DEFAULT_SEPA_CUTSELRESTART 'a' /**< cut selection during restart ('a'ge, activity 'q'uotient) */
432 #define SCIP_DEFAULT_SEPA_CUTSELSUBSCIP 'a' /**< cut selection for sub SCIPs ('a'ge, activity 'q'uotient) */
433 #define SCIP_DEFAULT_SEPA_FILTERCUTPOOLREL TRUE /**< should cutpool separate only cuts with high relative efficacy? */
434 #define SCIP_DEFAULT_SEPA_MAXRUNS -1 /**< maximal number of runs for which separation is enabled (-1: unlimited) */
435 #define SCIP_DEFAULT_SEPA_MAXROUNDS -1 /**< maximal number of separation rounds per node (-1: unlimited) */
436 #define SCIP_DEFAULT_SEPA_MAXROUNDSROOT -1 /**< maximal number of separation rounds in the root node (-1: unlimited) */
437 #define SCIP_DEFAULT_SEPA_MAXROUNDSROOTSUBRUN -1 /**< maximal number of separation rounds in the root node of a subsequent run (-1: unlimited) */
438 #define SCIP_DEFAULT_SEPA_MAXADDROUNDS 1 /**< maximal additional number of separation rounds in subsequent
439  * price-and-cut loops (-1: no additional restriction) */
440 #define SCIP_DEFAULT_SEPA_MAXSTALLROUNDSROOT 10 /**< maximal number of consecutive separation rounds without objective
441  * or integrality improvement in the root node (-1: no additional restriction) */
442 #define SCIP_DEFAULT_SEPA_MAXSTALLROUNDS 1 /**< maximal number of consecutive separation rounds without objective
443  * or integrality improvement in local nodes (-1: no additional restriction) */
444 #define SCIP_DEFAULT_SEPA_MAXCUTS 100 /**< maximal number of cuts separated per separation round */
445 #define SCIP_DEFAULT_SEPA_MAXCUTSROOT 2000 /**< maximal separated cuts at the root node */
446 #define SCIP_DEFAULT_SEPA_CUTAGELIMIT 80 /**< maximum age a cut can reach before it is deleted from global cut pool
447  * (-1: cuts are never deleted from the global cut pool) */
448 #define SCIP_DEFAULT_SEPA_POOLFREQ 10 /**< separation frequency for the global cut pool */
449 #define SCIP_DEFAULT_SEPA_MINACTIVITYQUOT 0.8 /**< minimum cut activity quotient to convert cuts into constraints
450  * during a restart (0.0: all cuts are converted) */
451 
452 /* Parallel */
453 #define SCIP_DEFAULT_PARALLEL_MODE 1 /**< the mode for the parallel implementation. Either 0: opportunistic or
454  * 1: deterministic */
455 #define SCIP_DEFAULT_PARALLEL_MINNTHREADS 1 /**< the minimum number of threads used in parallel code */
456 #define SCIP_DEFAULT_PARALLEL_MAXNTHREADS 8 /**< the maximum number of threads used in parallel code */
457 
458 /* Concurrent solvers */
459 #define SCIP_DEFAULT_CONCURRENT_CHANGESEEDS TRUE /**< should the concurrent solvers use different random seeds? */
460 #define SCIP_DEFAULT_CONCURRENT_CHANGECHILDSEL TRUE /**< should the concurrent solvers use different child selection rules? */
461 #define SCIP_DEFAULT_CONCURRENT_COMMVARBNDS TRUE /**< should the concurrent solvers communicate variable bounds? */
462 #define SCIP_DEFAULT_CONCURRENT_PRESOLVEBEFORE TRUE /**< should the problem be presolved before it is copied to the concurrent solvers? */
463 #define SCIP_DEFAULT_CONCURRENT_INITSEED 5131912 /**< the seed used to initialize the random seeds for the concurrent solvers */
464 #define SCIP_DEFAULT_CONCURRENT_FREQINIT 10.0 /**< initial frequency of synchronization with other threads
465  * (fraction of time required for solving the root LP) */
466 #define SCIP_DEFAULT_CONCURRENT_FREQMAX 10.0 /**< maximal frequency of synchronization with other threads
467  * (fraction of time required for solving the root LP) */
468 #define SCIP_DEFAULT_CONCURRENT_FREQFACTOR 1.5 /**< factor by which the frequency of synchronization is changed */
469 #define SCIP_DEFAULT_CONCURRENT_TARGETPROGRESS 0.001 /**< when adapting the synchronization frequency this value is the targeted
470  * relative difference by which the absolute gap decreases per synchronization */
471 #define SCIP_DEFAULT_CONCURRENT_MAXNSOLS 3 /**< maximum number of solutions that will be shared in a single synchronization */
472 #define SCIP_DEFAULT_CONCURRENT_MAXNSYNCDELAY 7 /**< maximum number of synchronizations before reading is enforced regardless of delay */
473 #define SCIP_DEFAULT_CONCURRENT_MINSYNCDELAY 10.0 /**< minimum delay before synchronization data is read */
474 #define SCIP_DEFAULT_CONCURRENT_NBESTSOLS 10 /**< how many of the N best solutions should be considered for synchronization */
475 #define SCIP_DEFAULT_CONCURRENT_PARAMSETPREFIX "" /**< path prefix for parameter setting files of concurrent solvers */
476 
477 
478 /* Timing */
479 
480 #define SCIP_DEFAULT_TIME_CLOCKTYPE SCIP_CLOCKTYPE_WALL /**< default clock type for timing */
481 #define SCIP_DEFAULT_TIME_ENABLED TRUE /**< is timing enabled? */
482 #define SCIP_DEFAULT_TIME_READING FALSE /**< belongs reading time to solving time? */
483 #define SCIP_DEFAULT_TIME_RARECLOCKCHECK FALSE /**< should clock checks of solving time be performed less frequently (might exceed time limit slightly) */
484 #define SCIP_DEFAULT_TIME_STATISTICTIMING TRUE /**< should timing for statistic output be enabled? */
485 #define SCIP_DEFAULT_TIME_NLPIEVAL FALSE /**< should time for evaluation in NLP solves be measured? */
487 
488 /* visualization output */
489 
490 #define SCIP_DEFAULT_VISUAL_VBCFILENAME "-" /**< name of the VBC tool output file, or "-" if no VBC tool output should be created */
491 #define SCIP_DEFAULT_VISUAL_BAKFILENAME "-" /**< name of the BAK tool output file, or "-" if no BAK tool output should be created */
492 #define SCIP_DEFAULT_VISUAL_REALTIME TRUE /**< should the real solving time be used instead of a time step counter in visualization? */
493 #define SCIP_DEFAULT_VISUAL_DISPSOLS FALSE /**< should the node where solutions are found be visualized? */
494 #define SCIP_DEFAULT_VISUAL_DISPLB FALSE /**< should lower bound information be visualized? */
495 #define SCIP_DEFAULT_VISUAL_OBJEXTERN TRUE /**< should be output the external value of the objective? */
497 
498 /* Reading */
500 #define SCIP_DEFAULT_READ_INITIALCONSS TRUE /**< should model constraints be marked as initial? */
501 #define SCIP_DEFAULT_READ_DYNAMICCONSS TRUE /**< should model constraints be subject to aging? */
502 #define SCIP_DEFAULT_READ_DYNAMICCOLS FALSE /**< should columns be added and removed dynamically to the LP? */
503 #define SCIP_DEFAULT_READ_DYNAMICROWS FALSE /**< should rows be added and removed dynamically to the LP? */
504 #define SCIP_DEFAULT_WRITE_GENNAMES_OFFSET 0 /**< when writing the problem with generic names, we start with index
505  * 0; using this parameter we can change the starting index to be
506  * different */
507 
508 
509 /* Writing */
510 
511 #define SCIP_DEFAULT_WRITE_ALLCONSS FALSE /**< should all constraints be written (including the redundant constraints)? */
512 #define SCIP_DEFAULT_PRINTZEROS FALSE /**< should variables set to zero be printed? */
513 
514 
516 /** calculate memory size for dynamically allocated arrays */
517 static
518 int calcGrowSize(
519  int initsize, /**< initial size of array */
520  SCIP_Real growfac, /**< growing factor of array */
521  int num /**< minimum number of entries to store */
522  )
523 {
524  int size;
525 
526  assert(initsize >= 0);
527  assert(growfac >= 1.0);
528  assert(num >= 0);
530  if( growfac == 1.0 )
531  size = MAX(initsize, num);
532  else
533  {
534  int oldsize;
536  /* calculate the size with this loop, such that the resulting numbers are always the same (-> block memory) */
537  initsize = MAX(initsize, 4);
538  size = initsize;
539  oldsize = size - 1;
540 
541  /* second condition checks against overflow */
542  while( size < num && size > oldsize )
543  {
544  oldsize = size;
545  size = (int)(growfac * size + initsize);
546  }
547 
548  /* if an overflow happened, set the correct value */
549  if( size <= oldsize )
550  size = num;
551  }
553  assert(size >= initsize);
554  assert(size >= num);
555 
556  return size;
557 }
560 /** information method for a parameter change of feastol */
561 static
562 SCIP_DECL_PARAMCHGD(paramChgdFeastol)
563 { /*lint --e{715}*/
564  SCIP_Real newfeastol;
565 
566  newfeastol = SCIPparamGetReal(param);
568  /* change the feastol through the SCIP call in order to adjust LP's feastol if necessary */
569  SCIP_CALL( SCIPchgFeastol(scip, newfeastol) );
571  return SCIP_OKAY;
572 }
573 
574 /** information method for a parameter change of lpfeastolfactor */
575 static
576 SCIP_DECL_PARAMCHGD(paramChgdLPFeastolFactor)
577 { /*lint --e{715}*/
578  SCIP_Real newlpfeastolfactor;
580  newlpfeastolfactor = SCIPparamGetReal(param);
582  if( SCIPgetStage(scip) == SCIP_STAGE_SOLVING && SCIPgetLPFeastol(scip) > newlpfeastolfactor * SCIPfeastol(scip) )
583  {
584  /* reset the LP feastol to ensure that it does not exceed newlpfeastolfactor * SCIP's feastol
585  * this also marks the LP unsolved
586  */
588  }
589 
590  return SCIP_OKAY;
591 }
592 
593 /** information method for a parameter change of dualfeastol */
594 static
595 SCIP_DECL_PARAMCHGD(paramChgdDualfeastol)
596 { /*lint --e{715}*/
597  SCIP_Real newdualfeastol;
598 
599  newdualfeastol = SCIPparamGetReal(param);
600 
601  /* change the dualfeastol through the SCIP call in order to mark the LP unsolved */
602  SCIP_CALL( SCIPchgDualfeastol(scip, newdualfeastol) );
603 
604  return SCIP_OKAY;
605 }
606 
607 /** information method for a parameter change of barrierconvtol */
608 static
609 SCIP_DECL_PARAMCHGD(paramChgdBarrierconvtol)
610 { /*lint --e{715}*/
611  SCIP_Real newbarrierconvtol;
612 
613  newbarrierconvtol = SCIPparamGetReal(param);
614 
615  /* change the barrierconvtol through the SCIP call in order to mark the LP unsolved */
616  SCIP_CALL( SCIPchgBarrierconvtol(scip, newbarrierconvtol) );
617 
618  return SCIP_OKAY;
619 }
620 
621 /** information method for a parameter change of infinity value */
622 static
623 SCIP_DECL_PARAMCHGD(paramChgdInfinity)
624 { /*lint --e{715}*/
626 
627  infinity = SCIPparamGetReal(param);
628 
629  /* Check that infinity value of LP-solver is at least as large as the one used in SCIP. This is necessary, because we
630  * transfer SCIP infinity values to the ones by the LPI, but not the converse. */
631  if ( scip->lp != NULL && scip->lp->lpi != NULL && infinity > SCIPlpiInfinity(scip->lp->lpi) )
632  {
633  SCIPerrorMessage("The infinity value of the LP solver has to be at least as large as the one of SCIP.\n");
634  return SCIP_PARAMETERWRONGVAL;
635  }
636 
637  return SCIP_OKAY;
638 }
639 
640 /** parameter change information method to autoselect display columns again */
641 static
642 SCIP_DECL_PARAMCHGD(SCIPparamChgdDispWidth)
643 { /*lint --e{715}*/
644  /* automatically select the new active display columns */
646 
647  return SCIP_OKAY;
648 }
649 
650 /** parameter change information method that some limit was changed */
651 static
652 SCIP_DECL_PARAMCHGD(SCIPparamChgdLimit)
653 { /*lint --e{715}*/
655  return SCIP_OKAY;
656 }
657 
658 /** information method for a parameter change of mem_arraygrowfac */
659 static
660 SCIP_DECL_PARAMCHGD(paramChgdArraygrowfac)
661 { /*lint --e{715}*/
662  SCIP_Real newarraygrowfac;
663 
664  newarraygrowfac = SCIPparamGetReal(param);
665 
666  /* change arraygrowfac */
669 
670  return SCIP_OKAY;
671 }
672 
673 /** information method for a parameter change of mem_arraygrowinit */
674 static
675 SCIP_DECL_PARAMCHGD(paramChgdArraygrowinit)
676 { /*lint --e{715}*/
677  int newarraygrowinit;
678 
679  newarraygrowinit = SCIPparamGetInt(param);
680 
681  /* change arraygrowinit */
682  BMSsetBufferMemoryArraygrowinit(SCIPbuffer(scip), newarraygrowinit);
684 
685  return SCIP_OKAY;
686 }
687 
688 /** information method for a parameter change of reopt_enable */
689 static
690 SCIP_DECL_PARAMCHGD(paramChgdEnableReopt)
691 { /*lint --e{715}*/
692  SCIP_RETCODE retcode;
693 
694  assert( scip != NULL );
695  assert( param != NULL );
696 
697  /* create or deconstruct the reoptimization data structures */
699 
700  /* an appropriate error message is already printed in the above method */
701  if( retcode == SCIP_INVALIDCALL )
703 
704  return SCIP_OKAY;
705 }
706 
707 /** information method for a parameter change of usesymmetry */
708 static
709 SCIP_DECL_PARAMCHGD(paramChgdUsesymmetry)
710 { /*lint --e{715}*/
711  assert( scip != NULL );
712  assert( param != NULL );
713 
715  {
716  if ( SCIPparamGetInt(param) > 0 )
717  {
718  SCIPerrorMessage("Cannot turn on symmetry handling during (pre)solving or change method.\n");
719  return SCIP_PARAMETERWRONGVAL;
720  }
721  }
722 
723  return SCIP_OKAY;
724 }
725 
726 /** set parameters for reoptimization */
728  SCIP_SET* set, /**< SCIP data structure */
729  SCIP_MESSAGEHDLR* messagehdlr /**< message handler */
730  )
731 {
732  assert(set != NULL);
733  assert(messagehdlr != NULL);
734 
735  if( set->reopt_enable )
736  {
737  /* disable some parts of conflict analysis */
738  SCIP_CALL( SCIPsetSetCharParam(set, messagehdlr, "conflict/useboundlp", 'o') );
739  SCIP_CALL( SCIPsetSetBoolParam(set, messagehdlr, "conflict/usepseudo", FALSE) );
740 
741  /* TODO check wheather multi aggregation can be enabled in reoptimization */
742  if( SCIPsetIsParamFixed(set, "presolving/donotmultaggr") )
743  {
744  SCIP_CALL( SCIPsetChgParamFixed(set, "presolving/donotmultaggr", FALSE) );
745  }
746  SCIP_CALL( SCIPsetSetBoolParam(set, messagehdlr, "presolving/donotmultaggr", TRUE) );
747 
748  if( SCIPsetIsParamFixed(set, "branching/nodereopt/priority") )
749  {
750  SCIP_CALL( SCIPsetChgParamFixed(set, "branching/nodereopt/priority", FALSE) );
751  }
752  SCIP_CALL( SCIPsetSetIntParam(set, messagehdlr, "branching/nodereopt/priority", INT_MAX/4) );
753  }
754  else
755  {
756  /* disable conflict analysis */
757  if( SCIPsetIsParamFixed(set, "conflict/enable") )
758  {
759  SCIP_CALL( SCIPsetChgParamFixed(set, "conflict/enable", FALSE) );
760  }
761  SCIP_CALL( SCIPsetResetParam(set, messagehdlr, "conflict/enable") );
762 
763  /* TODO check wheather multi aggregation can be enabled in reoptimization */
764  if( SCIPsetIsParamFixed(set, "presolving/donotmultaggr") )
765  {
766  SCIP_CALL( SCIPsetChgParamFixed(set, "presolving/donotmultaggr", FALSE) );
767  }
768  SCIP_CALL( SCIPsetResetParam(set, messagehdlr, "presolving/donotmultaggr") );
770  /* set priority to defeault */
771  if( SCIPsetFindBranchrule(set, "nodereopt") != NULL )
772  {
773  if( SCIPsetIsParamFixed(set, "branching/nodereopt/priority") )
774  {
775  SCIP_CALL( SCIPsetChgParamFixed(set, "branching/nodereopt/priority", FALSE) );
776  }
777  SCIP_CALL( SCIPsetResetParam(set, messagehdlr, "branching/nodereopt/priority") );
778  }
779  }
780 
781  return SCIP_OKAY;
782 }
783 
784 /** enable or disable all plugin timers depending on the value of the flag \p enabled */
786  SCIP_SET* set, /**< SCIP settings */
787  SCIP_Bool enabled /**< should plugin clocks be enabled? */
788  )
789 {
790  int i;
791 
792  assert(set != NULL);
793 
794  /* go through all plugin types and enable or disable their respective clocks */
795  for( i = set->nreaders - 1; i >= 0; --i )
796  SCIPreaderEnableOrDisableClocks(set->readers[i], enabled);
797 
798  for( i = set->npricers - 1; i >= 0; --i )
799  SCIPpricerEnableOrDisableClocks(set->pricers[i], enabled);
800 
801  for( i = set->nconshdlrs - 1; i >= 0; --i )
802  SCIPconshdlrEnableOrDisableClocks(set->conshdlrs[i], enabled);
803 
804  for( i = set->nconflicthdlrs - 1; i >= 0; --i )
805  SCIPconflicthdlrEnableOrDisableClocks(set->conflicthdlrs[i], enabled);
807  for( i = set->npresols - 1; i >= 0; --i )
808  SCIPpresolEnableOrDisableClocks(set->presols[i], enabled);
809 
810  for( i = set->nrelaxs - 1; i >= 0; --i )
811  SCIPrelaxEnableOrDisableClocks(set->relaxs[i], enabled);
812 
813  for( i = set->nsepas - 1; i >= 0; --i )
814  SCIPsepaEnableOrDisableClocks(set->sepas[i], enabled);
815 
816  for( i = set->nprops - 1; i >= 0; --i )
817  SCIPpropEnableOrDisableClocks(set->props[i], enabled);
818 
819  for( i = set->nheurs - 1; i >= 0; --i )
820  SCIPheurEnableOrDisableClocks(set->heurs[i], enabled);
821 
822  for( i = set->neventhdlrs - 1; i >= 0; --i )
823  SCIPeventhdlrEnableOrDisableClocks(set->eventhdlrs[i], enabled);
824 
825  for( i = set->nnodesels - 1; i >= 0; --i )
826  SCIPnodeselEnableOrDisableClocks(set->nodesels[i], enabled);
827 
828  for ( i = set->ncutsels - 1; i >= 0; --i )
829  SCIPcutselEnableOrDisableClocks(set->cutsels[i], enabled);
830 
831  for( i = set->nbranchrules - 1; i >= 0; --i )
832  SCIPbranchruleEnableOrDisableClocks(set->branchrules[i], enabled);
833 }
834 
835 /* method to be invoked when the parameter timing/statistictiming is changed */
836 static
837 SCIP_DECL_PARAMCHGD(paramChgdStatistictiming)
838 { /*lint --e{715}*/
840 
841  return SCIP_OKAY;
842 }
843 
844 /** copies plugins from sourcescip to targetscip; in case that a constraint handler which does not need constraints
845  * cannot be copied, valid will return FALSE. All plugins can declare that, if their copy process failed, the
846  * copied SCIP instance might not represent the same problem semantics as the original.
847  * Note that in this case dual reductions might be invalid. */
849  SCIP_SET* sourceset, /**< source SCIP_SET data structure */
850  SCIP_SET* targetset, /**< target SCIP_SET data structure */
851  SCIP_Bool copyreaders, /**< should the file readers be copied */
852  SCIP_Bool copypricers, /**< should the variable pricers be copied */
853  SCIP_Bool copyconshdlrs, /**< should the constraint handlers be copied */
854  SCIP_Bool copyconflicthdlrs, /**< should the conflict handlers be copied */
855  SCIP_Bool copypresolvers, /**< should the presolvers be copied */
856  SCIP_Bool copyrelaxators, /**< should the relaxators be copied */
857  SCIP_Bool copyseparators, /**< should the separators be copied */
858  SCIP_Bool copycutselectors, /**< should the cut selectors be copied */
859  SCIP_Bool copypropagators, /**< should the propagators be copied */
860  SCIP_Bool copyheuristics, /**< should the heuristics be copied */
861  SCIP_Bool copyeventhdlrs, /**< should the event handlers be copied */
862  SCIP_Bool copynodeselectors, /**< should the node selectors be copied */
863  SCIP_Bool copybranchrules, /**< should the branchrules be copied */
864  SCIP_Bool copydisplays, /**< should the display columns be copied */
865  SCIP_Bool copydialogs, /**< should the dialogs be copied */
866  SCIP_Bool copytables, /**< should the statistics tables be copied */
867  SCIP_Bool copyexprhdlrs, /**< should the expression handlers be copied */
868  SCIP_Bool copynlpis, /**< should the NLP interfaces be copied */
869  SCIP_Bool* allvalid /**< pointer to store whether all plugins were validly copied */
870  )
871 {
872  int p;
873  SCIP_Bool valid;
874 
875  assert(sourceset != NULL);
876  assert(targetset != NULL);
877  assert(sourceset != targetset);
878  assert(allvalid != NULL);
879 
880  *allvalid = TRUE;
881 
882  /* copy all dialog plugins */
883  if( copydialogs && sourceset->dialogs != NULL )
884  {
885  for( p = sourceset->ndialogs - 1; p >= 0; --p )
886  {
887  /* @todo: the copying process of dialog handlers is currently not checked for consistency */
888  SCIP_CALL( SCIPdialogCopyInclude(sourceset->dialogs[p], targetset) );
889  }
890  }
891 
892  /* copy all reader plugins */
893  if( copyreaders && sourceset->readers != NULL )
894  {
895  for( p = sourceset->nreaders - 1; p >= 0; --p )
896  {
897  SCIP_CALL( SCIPreaderCopyInclude(sourceset->readers[p], targetset) );
898  }
899  }
900 
901  /* copy all variable pricer plugins */
902  if( copypricers && sourceset->pricers != NULL )
903  {
904  for( p = sourceset->npricers - 1; p >= 0; --p )
905  {
906  valid = FALSE;
907  SCIP_CALL( SCIPpricerCopyInclude(sourceset->pricers[p], targetset, &valid) );
908  *allvalid = *allvalid && valid;
909  if( SCIPpricerIsActive(sourceset->pricers[p]) )
910  {
911  SCIP_CALL( SCIPactivatePricer(targetset->scip, targetset->pricers[p]) );
912  }
913  }
914  }
915 
916  /* copy all constraint handler plugins */
917  if( copyconshdlrs && sourceset->conshdlrs_include != NULL )
918  {
919  /* copy them in order they were added to the sourcescip
920  *
921  * @note we only have to set the valid pointer to FALSE in case that a constraint handler, which does not need
922  * constraints, does not copy; in the case that a constraint handler does not copy and it needs constraint
923  * we will detect later that the problem is not valid if a constraint of that type exits
924  */
925  for( p = 0; p < sourceset->nconshdlrs; ++p )
926  {
928  {
929  valid = FALSE;
930  SCIP_CALL( SCIPconshdlrCopyInclude(sourceset->conshdlrs_include[p], targetset, &valid) );
931  *allvalid = *allvalid && valid;
932  SCIPsetDebugMsg(sourceset, "Copying conshdlr <%s> was%s valid.\n", SCIPconshdlrGetName(sourceset->conshdlrs_include[p]), valid ? "" : " not");
933  }
934  else if( !SCIPconshdlrNeedsCons(sourceset->conshdlrs_include[p]) )
935  {
936  SCIPsetDebugMsg(sourceset, "Copying Conshdlr <%s> without constraints not valid.\n", SCIPconshdlrGetName(sourceset->conshdlrs_include[p]));
937  *allvalid = FALSE;
938  }
939  }
940  }
941 
942  /* copy all conflict handler plugins */
943  if( copyconflicthdlrs && sourceset->conflicthdlrs != NULL )
944  {
945  for( p = sourceset->nconflicthdlrs - 1; p >= 0; --p )
946  {
947  SCIP_CALL( SCIPconflicthdlrCopyInclude(sourceset->conflicthdlrs[p], targetset) );
948  }
949  }
950 
951  /* copy all presolver plugins */
952  if( copypresolvers && sourceset->presols != NULL )
953  {
954  for( p = sourceset->npresols - 1; p >= 0; --p )
955  {
956  SCIP_CALL( SCIPpresolCopyInclude(sourceset->presols[p], targetset) );
957  }
958  }
959 
960  /* copy all relaxator plugins */
961  if( copyrelaxators && sourceset->relaxs != NULL )
962  {
963  for( p = sourceset->nrelaxs - 1; p >= 0; --p )
964  {
965  SCIP_CALL( SCIPrelaxCopyInclude(sourceset->relaxs[p], targetset) );
966  }
967  }
968 
969  /* copy all separator plugins */
970  if( copyseparators && sourceset->sepas != NULL )
971  {
972  for( p = sourceset->nsepas - 1; p >= 0; --p )
973  {
974  SCIP_CALL( SCIPsepaCopyInclude(sourceset->sepas[p], targetset) );
975  }
976  }
977 
978  /* copy all cut selector plugins */
979  if( copycutselectors && sourceset->cutsels != NULL )
980  {
981  for( p = sourceset->ncutsels - 1; p >= 0; --p )
982  {
983  SCIP_CALL( SCIPcutselCopyInclude(sourceset->cutsels[p], targetset) );
984  }
985  }
986 
987  /* copy all propagators plugins */
988  if( copypropagators && sourceset->props != NULL )
989  {
990  for( p = sourceset->nprops - 1; p >= 0; --p )
991  {
992  SCIP_CALL( SCIPpropCopyInclude(sourceset->props[p], targetset) );
993  }
994  }
995 
996  /* copy all primal heuristics plugins */
997  if( copyheuristics && sourceset->heurs != NULL )
998  {
999  for( p = sourceset->nheurs - 1; p >= 0; --p )
1000  {
1001  SCIP_CALL( SCIPheurCopyInclude(sourceset->heurs[p], targetset) );
1002  }
1003  }
1004 
1005  /* copy all event handler plugins */
1006  if( copyeventhdlrs && sourceset->eventhdlrs != NULL )
1007  {
1008  for( p = sourceset->neventhdlrs - 1; p >= 0; --p )
1009  {
1010  /* @todo: the copying process of event handlers is currently not checked for consistency */
1011  SCIP_CALL( SCIPeventhdlrCopyInclude(sourceset->eventhdlrs[p], targetset) );
1012  }
1013  }
1014 
1015  /* copy all node selector plugins */
1016  if( copynodeselectors && sourceset->nodesels != NULL )
1017  {
1018  for( p = sourceset->nnodesels - 1; p >= 0; --p )
1019  {
1020  SCIP_CALL( SCIPnodeselCopyInclude(sourceset->nodesels[p], targetset) );
1021  }
1022  }
1023 
1024  /* copy all branchrule plugins */
1025  if( copybranchrules && sourceset->branchrules != NULL )
1026  {
1027  for( p = sourceset->nbranchrules - 1; p >= 0; --p )
1028  {
1029  SCIP_CALL( SCIPbranchruleCopyInclude(sourceset->branchrules[p], targetset) );
1030  }
1031  }
1032 
1033  /* copy all display plugins */
1034  if( copydisplays && sourceset->disps != NULL )
1035  {
1036  for( p = sourceset->ndisps - 1; p >= 0; --p )
1037  {
1038  SCIP_CALL( SCIPdispCopyInclude(sourceset->disps[p], targetset) );
1039  }
1040  }
1041 
1042  /* copy all table plugins */
1043  if( copytables && sourceset->tables != NULL )
1044  {
1045  for( p = sourceset->ntables - 1; p >= 0; --p )
1046  {
1047  SCIP_CALL( SCIPtableCopyInclude(sourceset->tables[p], targetset) );
1048  }
1049  }
1050 
1051  /* copy all expression handlers */
1052  if( copyexprhdlrs && sourceset->exprhdlrs != NULL )
1053  {
1054  for( p = sourceset->nexprhdlrs - 1; p >= 0; --p )
1055  {
1056  SCIP_CALL( SCIPexprhdlrCopyInclude(sourceset->exprhdlrs[p], targetset) );
1057  }
1058  }
1059 
1060  /* copy all NLP interfaces */
1061  if( copynlpis && sourceset->nlpis != NULL )
1062  {
1063  for( p = sourceset->nnlpis - 1; p >= 0; --p )
1064  {
1065  SCIP_CALL( SCIPnlpiCopyInclude(sourceset->nlpis[p], targetset) );
1066  }
1067  }
1068 
1069  return SCIP_OKAY;
1070 }
1071 
1072 
1073 /** copies parameters from sourcescip to targetscip */
1075  SCIP_SET* sourceset, /**< source SCIP_SET data structure */
1076  SCIP_SET* targetset, /**< target SCIP_SET data structure */
1077  SCIP_MESSAGEHDLR* messagehdlr /**< message handler of target SCIP */
1078  )
1079 {
1080  assert(sourceset != NULL);
1081  assert(targetset != NULL);
1082  assert(sourceset != targetset);
1083  assert(targetset->scip != NULL);
1084 
1085  SCIP_CALL( SCIPparamsetCopyParams(sourceset->paramset, targetset->paramset, targetset, messagehdlr) );
1086 
1087  return SCIP_OKAY;
1088 }
1089 
1090 /** creates global SCIP settings */
1092  SCIP_SET** set, /**< pointer to SCIP settings */
1093  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
1094  BMS_BLKMEM* blkmem, /**< block memory */
1095  SCIP* scip /**< SCIP data structure */
1096  )
1097 {
1098  assert(set != NULL);
1099  assert(scip != NULL);
1100 
1101  SCIP_ALLOC( BMSallocMemory(set) );
1102 
1103  (*set)->stage = SCIP_STAGE_INIT;
1104  (*set)->scip = scip;
1105  (*set)->buffer = SCIPbuffer(scip);
1106  (*set)->cleanbuffer = SCIPcleanbuffer(scip);
1107 
1108  SCIP_CALL( SCIPparamsetCreate(&(*set)->paramset, blkmem) );
1109 
1110  (*set)->readers = NULL;
1111  (*set)->nreaders = 0;
1112  (*set)->readerssize = 0;
1113  (*set)->pricers = NULL;
1114  (*set)->npricers = 0;
1115  (*set)->nactivepricers = 0;
1116  (*set)->pricerssize = 0;
1117  (*set)->pricerssorted = FALSE;
1118  (*set)->pricersnamesorted = FALSE;
1119  (*set)->conshdlrs = NULL;
1120  (*set)->conshdlrs_sepa = NULL;
1121  (*set)->conshdlrs_enfo = NULL;
1122  (*set)->conshdlrs_include = NULL;
1123  (*set)->nconshdlrs = 0;
1124  (*set)->conshdlrssize = 0;
1125  (*set)->conflicthdlrs = NULL;
1126  (*set)->nconflicthdlrs = 0;
1127  (*set)->conflicthdlrssize = 0;
1128  (*set)->conflicthdlrssorted = FALSE;
1129  (*set)->conflicthdlrsnamesorted = FALSE;
1130  (*set)->benders = NULL;
1131  (*set)->nbenders = 0;
1132  (*set)->nactivebenders = 0;
1133  (*set)->benderssize = 0;
1134  (*set)->benderssorted = FALSE;
1135  (*set)->bendersnamesorted = FALSE;
1136 
1137  (*set)->debugsoldata = NULL;
1138  SCIP_CALL( SCIPdebugSolDataCreate(&(*set)->debugsoldata) ); /*lint !e506 !e774*/
1139 
1140  (*set)->presols = NULL;
1141  (*set)->npresols = 0;
1142  (*set)->presolssize = 0;
1143  (*set)->presolssorted = FALSE;
1144  (*set)->presolsnamesorted = FALSE;
1145  (*set)->relaxs = NULL;
1146  (*set)->nrelaxs = 0;
1147  (*set)->relaxssize = 0;
1148  (*set)->relaxssorted = FALSE;
1149  (*set)->relaxsnamesorted = FALSE;
1150  (*set)->sepas = NULL;
1151  (*set)->nsepas = 0;
1152  (*set)->sepassize = 0;
1153  (*set)->sepassorted = FALSE;
1154  (*set)->sepasnamesorted = FALSE;
1155  (*set)->props = NULL;
1156  (*set)->props_presol = NULL;
1157  (*set)->nprops = 0;
1158  (*set)->propssize = 0;
1159  (*set)->propssorted = FALSE;
1160  (*set)->propspresolsorted = FALSE;
1161  (*set)->propsnamesorted = FALSE;
1162  (*set)->concsolvertypes = NULL;
1163  (*set)->nconcsolvertypes = 0;
1164  (*set)->concsolvertypessize = 0;
1165  (*set)->concsolvers = NULL;
1166  (*set)->nconcsolvers = 0;
1167  (*set)->concsolverssize = 0;
1168  (*set)->concurrent_paramsetprefix = NULL;
1169  (*set)->cutsels = NULL;
1170  (*set)->ncutsels = 0;
1171  (*set)->cutselssize = 0;
1172  (*set)->cutselssorted = FALSE;
1173  (*set)->heurs = NULL;
1174  (*set)->nheurs = 0;
1175  (*set)->heurssize = 0;
1176  (*set)->heurssorted = FALSE;
1177  (*set)->heursnamesorted = FALSE;
1178  (*set)->comprs = NULL;
1179  (*set)->ncomprs = 0;
1180  (*set)->comprssize = 0;
1181  (*set)->comprssorted = FALSE;
1182  (*set)->comprsnamesorted = FALSE;
1183  (*set)->eventhdlrs = NULL;
1184  (*set)->neventhdlrs = 0;
1185  (*set)->eventhdlrssize = 0;
1186  (*set)->nodesels = NULL;
1187  (*set)->nnodesels = 0;
1188  (*set)->nodeselssize = 0;
1189  (*set)->nodesel = NULL;
1190  (*set)->branchrules = NULL;
1191  (*set)->nbranchrules = 0;
1192  (*set)->branchrulessize = 0;
1193  (*set)->branchrulessorted = FALSE;
1194  (*set)->branchrulesnamesorted = FALSE;
1195  (*set)->banditvtables = NULL;
1196  (*set)->banditvtablessize = 0;
1197  (*set)->nbanditvtables = 0;
1198  (*set)->disps = NULL;
1199  (*set)->ndisps = 0;
1200  (*set)->dispssize = 0;
1201  (*set)->tables = NULL;
1202  (*set)->ntables = 0;
1203  (*set)->tablessize = 0;
1204  (*set)->tablessorted = FALSE;
1205  (*set)->dialogs = NULL;
1206  (*set)->ndialogs = 0;
1207  (*set)->dialogssize = 0;
1208  (*set)->exprhdlrs = NULL;
1209  (*set)->exprhdlrvar = NULL;
1210  (*set)->exprhdlrval = NULL;
1211  (*set)->exprhdlrsum = NULL;
1212  (*set)->exprhdlrproduct = NULL;
1213  (*set)->exprhdlrpow = NULL;
1214  (*set)->nexprhdlrs = 0;
1215  (*set)->exprhdlrssize = 0;
1216  (*set)->exprhdlrssorted = FALSE;
1217  (*set)->nlpis = NULL;
1218  (*set)->nnlpis = 0;
1219  (*set)->nlpissize = 0;
1220  (*set)->nlpissorted = FALSE;
1221  (*set)->limitchanged = FALSE;
1222  (*set)->subscipsoff = FALSE;
1223  (*set)->extcodenames = NULL;
1224  (*set)->extcodedescs = NULL;
1225  (*set)->nextcodes = 0;
1226  (*set)->extcodessize = 0;
1227  (*set)->visual_vbcfilename = NULL;
1228  (*set)->visual_bakfilename = NULL;
1229  (*set)->nlp_solver = NULL;
1230  (*set)->nlp_disable = FALSE;
1231  (*set)->num_relaxfeastol = SCIP_INVALID;
1232  (*set)->misc_debugsol = NULL;
1233 
1234  /* the default time limit is infinite */
1235  (*set)->istimelimitfinite = FALSE;
1236 
1237  /* branching parameters */
1238  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
1239  "branching/scorefunc",
1240  "branching score function ('s'um, 'p'roduct, 'q'uotient)",
1241  &(*set)->branch_scorefunc, TRUE, SCIP_DEFAULT_BRANCH_SCOREFUNC, "spq",
1242  NULL, NULL) );
1243  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1244  "branching/scorefac",
1245  "branching score factor to weigh downward and upward gain prediction in sum score function",
1246  &(*set)->branch_scorefac, TRUE, SCIP_DEFAULT_BRANCH_SCOREFAC, 0.0, 1.0,
1247  NULL, NULL) );
1248  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1249  "branching/preferbinary",
1250  "should branching on binary variables be preferred?",
1251  &(*set)->branch_preferbinary, FALSE, SCIP_DEFAULT_BRANCH_PREFERBINARY,
1252  NULL, NULL) );
1253  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1254  "branching/clamp",
1255  "minimal relative distance of branching point to bounds when branching on a continuous variable",
1256  &(*set)->branch_clamp, FALSE, SCIP_DEFAULT_BRANCH_CLAMP, 0.0, 0.5,
1257  NULL, NULL) );
1258  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1259  "branching/midpull",
1260  "fraction by which to move branching point of a continuous variable towards the middle of the domain; a value of 1.0 leads to branching always in the middle of the domain",
1261  &(*set)->branch_midpull, FALSE, SCIP_DEFAULT_BRANCH_MIDPULL, 0.0, 1.0,
1262  NULL, NULL) );
1263  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1264  "branching/midpullreldomtrig",
1265  "multiply midpull by relative domain width if the latter is below this value",
1266  &(*set)->branch_midpullreldomtrig, FALSE, SCIP_DEFAULT_BRANCH_MIDPULLRELDOMTRIG, 0.0, 1.0,
1267  NULL, NULL) );
1268  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
1269  "branching/lpgainnormalize",
1270  "strategy for normalization of LP gain when updating pseudocosts of continuous variables (divide by movement of 'l'p value, reduction in 'd'omain width, or reduction in domain width of 's'ibling)",
1271  &(*set)->branch_lpgainnorm, FALSE, SCIP_DEFAULT_BRANCH_LPGAINNORMALIZE, "dls",
1272  NULL, NULL) );
1273  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1274  "branching/delaypscostupdate",
1275  "should updating pseudo costs for continuous variables be delayed to the time after separation?",
1276  &(*set)->branch_delaypscost, FALSE, SCIP_DEFAULT_BRANCH_DELAYPSCOST,
1277  NULL, NULL) );
1278  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1279  "branching/divingpscost",
1280  "should pseudo costs be updated also in diving and probing mode?",
1281  &(*set)->branch_divingpscost, FALSE, SCIP_DEFAULT_BRANCH_DIVINGPSCOST,
1282  NULL, NULL) );
1283  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1284  "branching/forceallchildren",
1285  "should all strong branching children be regarded even if one is detected to be infeasible? (only with propagation)",
1286  &(*set)->branch_forceall, TRUE, SCIP_DEFAULT_BRANCH_FORCEALL,
1287  NULL, NULL) );
1288  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
1289  "branching/firstsbchild",
1290  "child node to be regarded first during strong branching (only with propagation): 'u'p child, 'd'own child, 'h'istory-based, or 'a'utomatic",
1291  &(*set)->branch_firstsbchild, TRUE, SCIP_DEFAULT_BRANCH_FIRSTSBCHILD, "aduh",
1292  NULL, NULL) );
1293  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1294  "branching/checksol",
1295  "should LP solutions during strong branching with propagation be checked for feasibility?",
1296  &(*set)->branch_checksbsol, TRUE, SCIP_DEFAULT_BRANCH_CHECKSBSOL,
1297  NULL, NULL) );
1298  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1299  "branching/roundsbsol",
1300  "should LP solutions during strong branching with propagation be rounded? (only when checksbsol=TRUE)",
1301  &(*set)->branch_roundsbsol, TRUE, SCIP_DEFAULT_BRANCH_ROUNDSBSOL,
1302  NULL, NULL) );
1303  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1304  "branching/sumadjustscore",
1305  "score adjustment near zero by adding epsilon (TRUE) or using maximum (FALSE)",
1306  &(*set)->branch_sumadjustscore, TRUE, SCIP_DEFAULT_BRANCH_SUMADJUSTSCORE,
1307  NULL, NULL) );
1308 
1309  /* tree compression parameters */
1310  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1311  "compression/enable",
1312  "should automatic tree compression after the presolving be enabled?",
1313  &(*set)->compr_enable, TRUE, SCIP_DEFAULT_COMPR_ENABLE,
1314  NULL, NULL) );
1315 
1316  /* conflict analysis parameters */
1317  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1318  "conflict/enable",
1319  "should conflict analysis be enabled?",
1320  &(*set)->conf_enable, FALSE, SCIP_DEFAULT_CONF_ENABLE,
1321  NULL, NULL) );
1322  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1323  "conflict/cleanboundexceedings",
1324  "should conflicts based on an old cutoff bound be removed from the conflict pool after improving the primal bound?",
1325  &(*set)->conf_cleanbnddepend, TRUE, SCIP_DEFAULT_CONF_CLEANBNDDEPEND,
1326  NULL, NULL) );
1327  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1328  "conflict/uselocalrows",
1329  "use local rows to construct infeasibility proofs",
1330  &(*set)->conf_uselocalrows, TRUE, SCIP_DEFAULT_CONF_USELOCALROWS,
1331  NULL, NULL) );
1332  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1333  "conflict/useprop",
1334  "should propagation conflict analysis be used?",
1335  &(*set)->conf_useprop, FALSE, SCIP_DEFAULT_CONF_USEPROP,
1336  NULL, NULL) );
1337  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
1338  "conflict/useinflp",
1339  "should infeasible LP conflict analysis be used? ('o'ff, 'c'onflict graph, 'd'ual ray, 'b'oth conflict graph and dual ray)",
1340  &(*set)->conf_useinflp, FALSE, SCIP_DEFAULT_CONF_USEINFLP, "ocdb",
1341  NULL, NULL) );
1342  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
1343  "conflict/useboundlp",
1344  "should bound exceeding LP conflict analysis be used? ('o'ff, 'c'onflict graph, 'd'ual ray, 'b'oth conflict graph and dual ray)",
1345  &(*set)->conf_useboundlp, FALSE, SCIP_DEFAULT_CONF_USEBOUNDLP, "ocdb",
1346  NULL, NULL) );
1347  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1348  "conflict/usesb",
1349  "should infeasible/bound exceeding strong branching conflict analysis be used?",
1350  &(*set)->conf_usesb, FALSE, SCIP_DEFAULT_CONF_USESB,
1351  NULL, NULL) );
1352  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1353  "conflict/usepseudo",
1354  "should pseudo solution conflict analysis be used?",
1355  &(*set)->conf_usepseudo, FALSE, SCIP_DEFAULT_CONF_USEPSEUDO,
1356  NULL, NULL) );
1357  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1358  "conflict/maxvarsfac",
1359  "maximal fraction of variables involved in a conflict constraint",
1360  &(*set)->conf_maxvarsfac, TRUE, SCIP_DEFAULT_CONF_MAXVARSFAC, 0.0, SCIP_REAL_MAX,
1361  NULL, NULL) );
1362  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1363  "conflict/minmaxvars",
1364  "minimal absolute maximum of variables involved in a conflict constraint",
1365  &(*set)->conf_minmaxvars, TRUE, SCIP_DEFAULT_CONF_MINMAXVARS, 0, INT_MAX,
1366  NULL, NULL) );
1367  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1368  "conflict/maxlploops",
1369  "maximal number of LP resolving loops during conflict analysis (-1: no limit)",
1370  &(*set)->conf_maxlploops, TRUE, SCIP_DEFAULT_CONF_MAXLPLOOPS, -1, INT_MAX,
1371  NULL, NULL) );
1372  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1373  "conflict/lpiterations",
1374  "maximal number of LP iterations in each LP resolving loop (-1: no limit)",
1375  &(*set)->conf_lpiterations, TRUE, SCIP_DEFAULT_CONF_LPITERATIONS, -1, INT_MAX,
1376  NULL, NULL) );
1377  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1378  "conflict/fuiplevels",
1379  "number of depth levels up to which first UIP's are used in conflict analysis (-1: use All-FirstUIP rule)",
1380  &(*set)->conf_fuiplevels, TRUE, SCIP_DEFAULT_CONF_FUIPLEVELS, -1, INT_MAX,
1381  NULL, NULL) );
1382  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1383  "conflict/interconss",
1384  "maximal number of intermediate conflict constraints generated in conflict graph (-1: use every intermediate constraint)",
1385  &(*set)->conf_interconss, TRUE, SCIP_DEFAULT_CONF_INTERCONSS, -1, INT_MAX,
1386  NULL, NULL) );
1387  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1388  "conflict/reconvlevels",
1389  "number of depth levels up to which UIP reconvergence constraints are generated (-1: generate reconvergence constraints in all depth levels)",
1390  &(*set)->conf_reconvlevels, TRUE, SCIP_DEFAULT_CONF_RECONVLEVELS, -1, INT_MAX,
1391  NULL, NULL) );
1392  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1393  "conflict/maxconss",
1394  "maximal number of conflict constraints accepted at an infeasible node (-1: use all generated conflict constraints)",
1395  &(*set)->conf_maxconss, TRUE, SCIP_DEFAULT_CONF_MAXCONSS, -1, INT_MAX,
1396  NULL, NULL) );
1397  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1398  "conflict/maxstoresize",
1399  "maximal size of conflict store (-1: auto, 0: disable storage)",
1400  &(*set)->conf_maxstoresize, TRUE, SCIP_DEFAULT_CONF_MAXSTORESIZE, -1, INT_MAX,
1401  NULL, NULL) );
1402  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1403  "conflict/preferbinary",
1404  "should binary conflicts be preferred?",
1405  &(*set)->conf_preferbinary, FALSE, SCIP_DEFAULT_CONF_PREFERBINARY,
1406  NULL, NULL) );
1407  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1408  "conflict/prefinfproof",
1409  "prefer infeasibility proof to boundexceeding proof",
1410  &(*set)->conf_prefinfproof, TRUE, SCIP_DEFAULT_CONF_PREFINFPROOF,
1411  NULL, NULL) );
1412  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1413  "conflict/allowlocal",
1414  "should conflict constraints be generated that are only valid locally?",
1415  &(*set)->conf_allowlocal, TRUE, SCIP_DEFAULT_CONF_ALLOWLOCAL,
1416  NULL, NULL) );
1417  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1418  "conflict/settlelocal",
1419  "should conflict constraints be attached only to the local subtree where they can be useful?",
1420  &(*set)->conf_settlelocal, TRUE, SCIP_DEFAULT_CONF_SETTLELOCAL,
1421  NULL, NULL) );
1422  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1423  "conflict/repropagate",
1424  "should earlier nodes be repropagated in order to replace branching decisions by deductions?",
1425  &(*set)->conf_repropagate, TRUE, SCIP_DEFAULT_CONF_REPROPAGATE,
1426  NULL, NULL) );
1427  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1428  "conflict/keepreprop",
1429  "should constraints be kept for repropagation even if they are too long?",
1430  &(*set)->conf_keepreprop, TRUE, SCIP_DEFAULT_CONF_KEEPREPROP,
1431  NULL, NULL) );
1432  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1433  "conflict/separate",
1434  "should the conflict constraints be separated?",
1435  &(*set)->conf_separate, TRUE, SCIP_DEFAULT_CONF_SEPARATE,
1436  NULL, NULL) );
1437  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1438  "conflict/dynamic",
1439  "should the conflict constraints be subject to aging?",
1440  &(*set)->conf_dynamic, TRUE, SCIP_DEFAULT_CONF_DYNAMIC,
1441  NULL, NULL) );
1442  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1443  "conflict/removable",
1444  "should the conflict's relaxations be subject to LP aging and cleanup?",
1445  &(*set)->conf_removable, TRUE, SCIP_DEFAULT_CONF_REMOVEABLE,
1446  NULL, NULL) );
1447  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1448  "conflict/graph/depthscorefac",
1449  "score factor for depth level in bound relaxation heuristic",
1450  &(*set)->conf_depthscorefac, TRUE, SCIP_DEFAULT_CONF_DEPTHSCOREFAC, SCIP_REAL_MIN, SCIP_REAL_MAX,
1451  NULL, NULL) );
1452  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1453  "conflict/proofscorefac",
1454  "score factor for impact on acticity in bound relaxation heuristic",
1455  &(*set)->conf_proofscorefac, TRUE, SCIP_DEFAULT_CONF_PROOFSCOREFAC, SCIP_REAL_MIN, SCIP_REAL_MAX,
1456  NULL, NULL) );
1457  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1458  "conflict/uplockscorefac",
1459  "score factor for up locks in bound relaxation heuristic",
1460  &(*set)->conf_uplockscorefac, TRUE, SCIP_DEFAULT_CONF_UPLOCKSCOREFAC, SCIP_REAL_MIN, SCIP_REAL_MAX,
1461  NULL, NULL) );
1462  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1463  "conflict/downlockscorefac",
1464  "score factor for down locks in bound relaxation heuristic",
1465  &(*set)->conf_downlockscorefac, TRUE, SCIP_DEFAULT_CONF_DOWNLOCKSCOREFAC, SCIP_REAL_MIN, SCIP_REAL_MAX,
1466  NULL, NULL) );
1467  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1468  "conflict/scorefac",
1469  "factor to decrease importance of variables' earlier conflict scores",
1470  &(*set)->conf_scorefac, TRUE, SCIP_DEFAULT_CONF_SCOREFAC, 1e-6, 1.0,
1471  NULL, NULL) );
1472  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1473  "conflict/restartnum",
1474  "number of successful conflict analysis calls that trigger a restart (0: disable conflict restarts)",
1475  &(*set)->conf_restartnum, FALSE, SCIP_DEFAULT_CONF_RESTARTNUM, 0, INT_MAX,
1476  NULL, NULL) );
1477  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1478  "conflict/restartfac",
1479  "factor to increase restartnum with after each restart",
1480  &(*set)->conf_restartfac, FALSE, SCIP_DEFAULT_CONF_RESTARTFAC, 0.0, SCIP_REAL_MAX,
1481  NULL, NULL) );
1482  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1483  "conflict/ignorerelaxedbd",
1484  "should relaxed bounds be ignored?",
1485  &(*set)->conf_ignorerelaxedbd, TRUE, SCIP_DEFAULT_CONF_IGNORERELAXEDBD,
1486  NULL, NULL) );
1487  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1488  "conflict/maxvarsdetectimpliedbounds",
1489  "maximal number of variables to try to detect global bound implications and shorten the whole conflict set (0: disabled)",
1490  &(*set)->conf_maxvarsdetectimpliedbounds, TRUE, SCIP_DEFAULT_CONF_MAXVARSDETECTIMPLIEDBOUNDS, 0, INT_MAX,
1491  NULL, NULL) );
1492  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1493  "conflict/fullshortenconflict",
1494  "try to shorten the whole conflict set or terminate early (depending on the 'maxvarsdetectimpliedbounds' parameter)",
1495  &(*set)->conf_fullshortenconflict, TRUE, SCIP_DEFAULT_CONF_FULLSHORTENCONFLICT,
1496  NULL, NULL) );
1497  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1498  "conflict/conflictweight",
1499  "the weight the VSIDS score is weight by updating the VSIDS for a variable if it is part of a conflict",
1500  &(*set)->conf_conflictweight, FALSE, SCIP_DEFAULT_CONF_CONFLITWEIGHT, 0.0, 1.0,
1501  NULL, NULL) );
1502  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1503  "conflict/conflictgraphweight",
1504  "the weight the VSIDS score is weight by updating the VSIDS for a variable if it is part of a conflict graph",
1505  &(*set)->conf_conflictgraphweight, FALSE, SCIP_DEFAULT_CONF_CONFLITGRAPHWEIGHT, 0.0, 1.0,
1506  NULL, NULL) );
1507  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1508  "conflict/minimprove",
1509  "minimal improvement of primal bound to remove conflicts based on a previous incumbent",
1510  &(*set)->conf_minimprove, TRUE, SCIP_DEFAULT_CONF_MINIMPROVE, 0.0, 1.0, NULL, NULL) );
1511  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1512  "conflict/weightsize",
1513  "weight of the size of a conflict used in score calculation",
1514  &(*set)->conf_weightsize, TRUE, SCIP_DEFAULT_CONF_WEIGHTSIZE, 0.0, 1.0, NULL, NULL) );
1515  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1516  "conflict/weightrepropdepth",
1517  "weight of the repropagation depth of a conflict used in score calculation",
1518  &(*set)->conf_weightrepropdepth, TRUE, SCIP_DEFAULT_CONF_WEIGHTREPROPDEPTH, 0.0, 1.0, NULL, NULL) );
1519  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1520  "conflict/weightvaliddepth",
1521  "weight of the valid depth of a conflict used in score calculation",
1522  &(*set)->conf_weightvaliddepth, TRUE, SCIP_DEFAULT_CONF_WEIGHTVALIDDEPTH, 0.0, 1.0, NULL, NULL) );
1523  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1524  "conflict/sepaaltproofs",
1525  "apply cut generating functions to construct alternative proofs",
1526  &(*set)->conf_sepaaltproofs, FALSE, SCIP_DEFAULT_CONF_SEPAALTPROOFS,
1527  NULL, NULL) );
1528 
1529  /* constraint parameters */
1530  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1531  "constraints/agelimit",
1532  "maximum age an unnecessary constraint can reach before it is deleted (0: dynamic, -1: keep all constraints)",
1533  &(*set)->cons_agelimit, TRUE, SCIP_DEFAULT_CONS_AGELIMIT, -1, INT_MAX,
1534  NULL, NULL) );
1535  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1536  "constraints/obsoleteage",
1537  "age of a constraint after which it is marked obsolete (0: dynamic, -1 do not mark constraints obsolete)",
1538  &(*set)->cons_obsoleteage, TRUE, SCIP_DEFAULT_CONS_OBSOLETEAGE, -1, INT_MAX,
1539  NULL, NULL) );
1540  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1541  "constraints/disableenfops",
1542  "should enforcement of pseudo solution be disabled?",
1543  &(*set)->cons_disableenfops, TRUE, SCIP_DEFAULT_CONS_DISABLEENFOPS,
1544  NULL, NULL) );
1545 
1546  /* display parameters */
1547  assert(sizeof(int) == sizeof(SCIP_VERBLEVEL)); /*lint !e506*/
1548  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1549  "display/verblevel",
1550  "verbosity level of output",
1551  (int*)&(*set)->disp_verblevel, FALSE, (int)SCIP_DEFAULT_DISP_VERBLEVEL,
1553  NULL, NULL) );
1554  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1555  "display/width",
1556  "maximal number of characters in a node information line",
1557  &(*set)->disp_width, FALSE, SCIP_DEFAULT_DISP_WIDTH, 0, INT_MAX,
1558  SCIPparamChgdDispWidth, NULL) );
1559  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1560  "display/freq",
1561  "frequency for displaying node information lines",
1562  &(*set)->disp_freq, FALSE, SCIP_DEFAULT_DISP_FREQ, -1, INT_MAX,
1563  NULL, NULL) );
1564  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1565  "display/headerfreq",
1566  "frequency for displaying header lines (every n'th node information line)",
1567  &(*set)->disp_headerfreq, FALSE, SCIP_DEFAULT_DISP_HEADERFREQ, -1, INT_MAX,
1568  NULL, NULL) );
1569  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1570  "display/lpinfo",
1571  "should the LP solver display status messages?",
1572  &(*set)->disp_lpinfo, FALSE, SCIP_DEFAULT_DISP_LPINFO,
1573  NULL, NULL) );
1574  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1575  "display/allviols",
1576  "display all violations for a given start solution / the best solution after the solving process?",
1577  &(*set)->disp_allviols, FALSE, SCIP_DEFAULT_DISP_ALLVIOLS,
1578  NULL, NULL) );
1579  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1580  "display/relevantstats",
1581  "should the relevant statistics be displayed at the end of solving?",
1582  &(*set)->disp_relevantstats, FALSE, SCIP_DEFAULT_DISP_RELEVANTSTATS,
1583  NULL, NULL) );
1584 
1585  /* heuristic parameters */
1586  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1587  "heuristics/useuctsubscip",
1588  "should setting of common subscip parameters include the activation of the UCT node selector?",
1589  &(*set)->heur_useuctsubscip, TRUE, SCIP_DEFAULT_HEUR_USEUCTSUBSCIP, NULL, NULL) );
1590 
1591  /* history parameters */
1592  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1593  "history/valuebased",
1594  "should statistics be collected for variable domain value pairs?",
1595  &(*set)->history_valuebased, FALSE, SCIP_DEFAULT_HISTORY_VALUEBASED,
1596  NULL, NULL) );
1597  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1598  "history/allowmerge",
1599  "should variable histories be merged from sub-SCIPs whenever possible?",
1600  &(*set)->history_allowmerge, FALSE, SCIP_DEFAULT_HISTORY_ALLOWMERGE,
1601  NULL, NULL) );
1602  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1603  "history/allowtransfer",
1604  "should variable histories be transferred to initialize SCIP copies?",
1605  &(*set)->history_allowtransfer, FALSE, SCIP_DEFAULT_HISTORY_ALLOWTRANSFER,
1606  NULL, NULL) );
1607 
1608  /* limit parameters */
1609  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1610  "limits/time",
1611  "maximal time in seconds to run",
1612  &(*set)->limit_time, FALSE, SCIP_DEFAULT_LIMIT_TIME, 0.0, SCIP_DEFAULT_LIMIT_TIME,
1613  SCIPparamChgdLimit, NULL) );
1614  SCIP_CALL( SCIPsetAddLongintParam(*set, messagehdlr, blkmem,
1615  "limits/nodes",
1616  "maximal number of nodes to process (-1: no limit)",
1617  &(*set)->limit_nodes, FALSE, SCIP_DEFAULT_LIMIT_NODES, -1LL, SCIP_LONGINT_MAX,
1618  SCIPparamChgdLimit, NULL) );
1619  SCIP_CALL( SCIPsetAddLongintParam(*set, messagehdlr, blkmem,
1620  "limits/totalnodes",
1621  "maximal number of total nodes (incl. restarts) to process (-1: no limit)",
1622  &(*set)->limit_totalnodes, FALSE, SCIP_DEFAULT_LIMIT_NODES, -1LL, SCIP_LONGINT_MAX,
1623  SCIPparamChgdLimit, NULL) );
1624  SCIP_CALL( SCIPsetAddLongintParam(*set, messagehdlr, blkmem,
1625  "limits/stallnodes",
1626  "solving stops, if the given number of nodes was processed since the last improvement of the primal solution value (-1: no limit)",
1627  &(*set)->limit_stallnodes, FALSE, SCIP_DEFAULT_LIMIT_STALLNODES, -1LL, SCIP_LONGINT_MAX,
1628  SCIPparamChgdLimit, NULL) );
1629  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1630  "limits/memory",
1631  "maximal memory usage in MB; reported memory usage is lower than real memory usage!",
1632  &(*set)->limit_memory, FALSE, (SCIP_Real)SCIP_DEFAULT_LIMIT_MEMORY, 0.0, (SCIP_Real)SCIP_MEM_NOLIMIT,
1633  SCIPparamChgdLimit, NULL) );
1634  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1635  "limits/gap",
1636  "solving stops, if the relative gap = |primal - dual|/MIN(|dual|,|primal|) is below the given value, the gap is 'Infinity', if primal and dual bound have opposite signs",
1637  &(*set)->limit_gap, FALSE, SCIP_DEFAULT_LIMIT_GAP, 0.0, SCIP_REAL_MAX,
1638  SCIPparamChgdLimit, NULL) );
1639  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1640  "limits/absgap",
1641  "solving stops, if the absolute gap = |primalbound - dualbound| is below the given value",
1642  &(*set)->limit_absgap, FALSE, SCIP_DEFAULT_LIMIT_ABSGAP, 0.0, SCIP_REAL_MAX,
1643  SCIPparamChgdLimit, NULL) );
1644  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1645  "limits/solutions",
1646  "solving stops, if the given number of solutions were found (-1: no limit)",
1647  &(*set)->limit_solutions, FALSE, SCIP_DEFAULT_LIMIT_SOLUTIONS, -1, INT_MAX,
1648  SCIPparamChgdLimit, NULL) );
1649  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1650  "limits/bestsol",
1651  "solving stops, if the given number of solution improvements were found (-1: no limit)",
1652  &(*set)->limit_bestsol, FALSE, SCIP_DEFAULT_LIMIT_BESTSOL, -1, INT_MAX,
1653  SCIPparamChgdLimit, NULL) );
1654  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1655  "limits/maxsol",
1656  "maximal number of solutions to store in the solution storage",
1657  &(*set)->limit_maxsol, FALSE, SCIP_DEFAULT_LIMIT_MAXSOL, 1, INT_MAX,
1658  SCIPparamChgdLimit, NULL) );
1659  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1660  "limits/maxorigsol",
1661  "maximal number of solutions candidates to store in the solution storage of the original problem",
1662  &(*set)->limit_maxorigsol, FALSE, SCIP_DEFAULT_LIMIT_MAXORIGSOL, 0, INT_MAX,
1663  SCIPparamChgdLimit, NULL) );
1664  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1665  "limits/restarts",
1666  "solving stops, if the given number of restarts was triggered (-1: no limit)",
1667  &(*set)->limit_restarts, FALSE, SCIP_DEFAULT_LIMIT_RESTARTS, -1, INT_MAX,
1668  SCIPparamChgdLimit, NULL) );
1669 
1670  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1671  "limits/autorestartnodes",
1672  "if solve exceeds this number of nodes for the first time, an automatic restart is triggered (-1: no automatic restart)",
1673  &(*set)->limit_autorestartnodes, FALSE, SCIP_DEFAULT_LIMIT_AUTORESTARTNODES, -1, INT_MAX,
1674  SCIPparamChgdLimit, NULL) );
1675 
1676  /* LP parameters */
1677  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1678  "lp/solvefreq",
1679  "frequency for solving LP at the nodes (-1: never; 0: only root LP)",
1680  &(*set)->lp_solvefreq, FALSE, SCIP_DEFAULT_LP_SOLVEFREQ, -1, SCIP_MAXTREEDEPTH,
1681  NULL, NULL) );
1682  SCIP_CALL( SCIPsetAddLongintParam(*set, messagehdlr, blkmem,
1683  "lp/iterlim",
1684  "iteration limit for each single LP solve (-1: no limit)",
1685  &(*set)->lp_iterlim, TRUE, SCIP_DEFAULT_LP_ITERLIM, -1LL, SCIP_LONGINT_MAX,
1686  NULL, NULL) );
1687  SCIP_CALL( SCIPsetAddLongintParam(*set, messagehdlr, blkmem,
1688  "lp/rootiterlim",
1689  "iteration limit for initial root LP solve (-1: no limit)",
1690  &(*set)->lp_rootiterlim, TRUE, SCIP_DEFAULT_LP_ROOTITERLIM, -1LL, SCIP_LONGINT_MAX,
1691  NULL, NULL) );
1692  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1693  "lp/solvedepth",
1694  "maximal depth for solving LP at the nodes (-1: no depth limit)",
1695  &(*set)->lp_solvedepth, FALSE, SCIP_DEFAULT_LP_SOLVEDEPTH, -1, SCIP_MAXTREEDEPTH,
1696  NULL, NULL) );
1697  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
1698  "lp/initalgorithm",
1699  "LP algorithm for solving initial LP relaxations (automatic 's'implex, 'p'rimal simplex, 'd'ual simplex, 'b'arrier, barrier with 'c'rossover)",
1700  &(*set)->lp_initalgorithm, FALSE, SCIP_DEFAULT_LP_INITALGORITHM, "spdbc",
1701  NULL, NULL) );
1702  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
1703  "lp/resolvealgorithm",
1704  "LP algorithm for resolving LP relaxations if a starting basis exists (automatic 's'implex, 'p'rimal simplex, 'd'ual simplex, 'b'arrier, barrier with 'c'rossover)",
1705  &(*set)->lp_resolvealgorithm, FALSE, SCIP_DEFAULT_LP_RESOLVEALGORITHM, "spdbc",
1706  NULL, NULL) );
1707  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
1708  "lp/pricing",
1709  "LP pricing strategy ('l'pi default, 'a'uto, 'f'ull pricing, 'p'artial, 's'teepest edge pricing, 'q'uickstart steepest edge pricing, 'd'evex pricing)",
1710  &(*set)->lp_pricing, FALSE, SCIP_DEFAULT_LP_PRICING, "lafpsqd",
1711  NULL, NULL) );
1712  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1713  "lp/clearinitialprobinglp",
1714  "should lp state be cleared at the end of probing mode when lp was initially unsolved, e.g., when called right after presolving?",
1715  &(*set)->lp_clearinitialprobinglp, TRUE, SCIP_DEFAULT_LP_CLEARINITIALPROBINGLP,
1716  NULL, NULL) );
1717  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1718  "lp/resolverestore",
1719  "should the LP be resolved to restore the state at start of diving (if FALSE we buffer the solution values)?",
1720  &(*set)->lp_resolverestore, TRUE, SCIP_DEFAULT_LP_RESOLVERESTORE,
1721  NULL, NULL) );
1722  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1723  "lp/freesolvalbuffers",
1724  "should the buffers for storing LP solution values during diving be freed at end of diving?",
1725  &(*set)->lp_freesolvalbuffers, TRUE, SCIP_DEFAULT_LP_FREESOLVALBUFFERS,
1726  NULL, NULL) );
1727  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1728  "lp/colagelimit",
1729  "maximum age a dynamic column can reach before it is deleted from the LP (-1: don't delete columns due to aging)",
1730  &(*set)->lp_colagelimit, TRUE, SCIP_DEFAULT_LP_COLAGELIMIT, -1, INT_MAX,
1731  NULL, NULL) );
1732  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1733  "lp/rowagelimit",
1734  "maximum age a dynamic row can reach before it is deleted from the LP (-1: don't delete rows due to aging)",
1735  &(*set)->lp_rowagelimit, TRUE, SCIP_DEFAULT_LP_ROWAGELIMIT, -1, INT_MAX,
1736  NULL, NULL) );
1737  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1738  "lp/cleanupcols",
1739  "should new non-basic columns be removed after LP solving?",
1740  &(*set)->lp_cleanupcols, TRUE, SCIP_DEFAULT_LP_CLEANUPCOLS,
1741  NULL, NULL) );
1742  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1743  "lp/cleanupcolsroot",
1744  "should new non-basic columns be removed after root LP solving?",
1745  &(*set)->lp_cleanupcolsroot, TRUE, SCIP_DEFAULT_LP_CLEANUPCOLSROOT,
1746  NULL, NULL) );
1747  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1748  "lp/cleanuprows",
1749  "should new basic rows be removed after LP solving?",
1750  &(*set)->lp_cleanuprows, TRUE, SCIP_DEFAULT_LP_CLEANUPROWS,
1751  NULL, NULL) );
1752  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1753  "lp/cleanuprowsroot",
1754  "should new basic rows be removed after root LP solving?",
1755  &(*set)->lp_cleanuprowsroot, TRUE, SCIP_DEFAULT_LP_CLEANUPROWSROOT,
1756  NULL, NULL) );
1757  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1758  "lp/checkstability",
1759  "should LP solver's return status be checked for stability?",
1760  &(*set)->lp_checkstability, TRUE, SCIP_DEFAULT_LP_CHECKSTABILITY,
1761  NULL, NULL) );
1762  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1763  "lp/conditionlimit",
1764  "maximum condition number of LP basis counted as stable (-1.0: no limit)",
1765  &(*set)->lp_conditionlimit, TRUE, SCIP_DEFAULT_LP_CONDITIONLIMIT, -1.0, SCIP_REAL_MAX,
1766  NULL, NULL) );
1767  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1768  "lp/minmarkowitz",
1769  "minimal Markowitz threshold to control sparsity/stability in LU factorization",
1770  &(*set)->lp_markowitz, TRUE, SCIP_DEFAULT_LP_MARKOWITZ, 1e-4, 0.9999,
1771  NULL, NULL) );
1772  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1773  "lp/checkprimfeas",
1774  "should LP solutions be checked for primal feasibility, resolving LP when numerical troubles occur?",
1775  &(*set)->lp_checkprimfeas, TRUE, SCIP_DEFAULT_LP_CHECKPRIMFEAS,
1776  NULL, NULL) );
1777  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1778  "lp/checkdualfeas",
1779  "should LP solutions be checked for dual feasibility, resolving LP when numerical troubles occur?",
1780  &(*set)->lp_checkdualfeas, TRUE, SCIP_DEFAULT_LP_CHECKDUALFEAS,
1781  NULL, NULL) );
1782  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1783  "lp/checkfarkas",
1784  "should infeasibility proofs from the LP be checked?",
1785  &(*set)->lp_checkfarkas, TRUE, SCIP_DEFAULT_LP_CHECKFARKAS,
1786  NULL, NULL) );
1787  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1788  "lp/fastmip",
1789  "which FASTMIP setting of LP solver should be used? 0: off, 1: low",
1790  &(*set)->lp_fastmip, TRUE, SCIP_DEFAULT_LP_FASTMIP, 0, 1,
1791  NULL, NULL) );
1792  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1793  "lp/scaling",
1794  "LP scaling (0: none, 1: normal, 2: aggressive)",
1795  &(*set)->lp_scaling, TRUE, SCIP_DEFAULT_LP_SCALING, 0, 2,
1796  NULL, NULL) );
1797  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1798  "lp/presolving",
1799  "should presolving of LP solver be used?",
1800  &(*set)->lp_presolving, TRUE, SCIP_DEFAULT_LP_PRESOLVING,
1801  NULL, NULL) );
1802  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1803  "lp/lexdualalgo",
1804  "should the lexicographic dual algorithm be used?",
1805  &(*set)->lp_lexdualalgo, TRUE, SCIP_DEFAULT_LP_LEXDUALALGO,
1806  NULL, NULL) );
1807  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1808  "lp/lexdualrootonly",
1809  "should the lexicographic dual algorithm be applied only at the root node",
1810  &(*set)->lp_lexdualrootonly, TRUE, SCIP_DEFAULT_LP_LEXDUALROOTONLY,
1811  NULL, NULL) );
1812  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1813  "lp/lexdualmaxrounds",
1814  "maximum number of rounds in the lexicographic dual algorithm (-1: unbounded)",
1815  &(*set)->lp_lexdualmaxrounds, TRUE, SCIP_DEFAULT_LP_LEXDUALMAXROUNDS, -1, INT_MAX,
1816  NULL, NULL) );
1817  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1818  "lp/lexdualbasic",
1819  "choose fractional basic variables in lexicographic dual algorithm?",
1820  &(*set)->lp_lexdualbasic, TRUE, SCIP_DEFAULT_LP_LEXDUALBASIC,
1821  NULL, NULL) );
1822  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1823  "lp/lexdualstalling",
1824  "turn on the lex dual algorithm only when stalling?",
1825  &(*set)->lp_lexdualstalling, TRUE, SCIP_DEFAULT_LP_LEXDUALSTALLING,
1826  NULL, NULL) );
1827  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1828  "lp/disablecutoff",
1829  "disable the cutoff bound in the LP solver? (0: enabled, 1: disabled, 2: auto)",
1830  &(*set)->lp_disablecutoff, TRUE, SCIP_DEFAULT_LP_DISABLECUTOFF,
1831  0, 2, NULL, NULL) );
1832  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1833  "lp/rowrepswitch",
1834  "simplex algorithm shall use row representation of the basis if number of rows divided by number of columns exceeds this value (-1.0 to disable row representation)",
1835  &(*set)->lp_rowrepswitch, TRUE, SCIP_DEFAULT_LP_ROWREPSWITCH, -1.0, SCIP_REAL_MAX,
1836  NULL, NULL) );
1837  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1838  "lp/threads",
1839  "number of threads used for solving the LP (0: automatic)",
1840  &(*set)->lp_threads, TRUE, SCIP_DEFAULT_LP_THREADS, 0, 64,
1841  NULL, NULL) );
1842  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1843  "lp/resolveiterfac",
1844  "factor of average LP iterations that is used as LP iteration limit for LP resolve (-1: unlimited)",
1845  &(*set)->lp_resolveiterfac, TRUE, SCIP_DEFAULT_LP_RESOLVEITERFAC, -1.0, SCIP_REAL_MAX,
1846  NULL, NULL) );
1847  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1848  "lp/resolveitermin",
1849  "minimum number of iterations that are allowed for LP resolve",
1850  &(*set)->lp_resolveitermin, TRUE, SCIP_DEFAULT_LP_RESOLVEITERMIN, 1, INT_MAX,
1851  NULL, NULL) );
1852 
1853  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1854  "lp/solutionpolishing",
1855  "LP solution polishing method (0: disabled, 1: only root, 2: always, 3: auto)",
1856  &(*set)->lp_solutionpolishing, TRUE, SCIP_DEFAULT_LP_SOLUTIONPOLISHING, 0, 3,
1857  NULL, NULL) );
1858 
1859  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1860  "lp/refactorinterval",
1861  "LP refactorization interval (0: auto)",
1862  &(*set)->lp_refactorinterval, TRUE, SCIP_DEFAULT_LP_REFACTORINTERVAL, 0, INT_MAX,
1863  NULL, NULL) );
1864  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1865  "lp/alwaysgetduals",
1866  "should the Farkas duals always be collected when an LP is found to be infeasible?",
1867  &(*set)->lp_alwaysgetduals, FALSE, SCIP_DEFAULT_LP_ALWAYSGETDUALS,
1868  NULL, NULL) );
1869 
1870  /* NLP parameters */
1871  SCIP_CALL( SCIPsetAddStringParam(*set, messagehdlr, blkmem,
1872  "nlp/solver",
1873  "solver to use for solving NLPs; leave empty to select NLPI with highest priority",
1874  &(*set)->nlp_solver, FALSE, SCIP_DEFAULT_NLP_SOLVER,
1875  NULL, NULL) );
1876  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1877  "nlp/disable",
1878  "should the NLP relaxation be always disabled (also for NLPs/MINLPs)?",
1879  &(*set)->nlp_disable, FALSE, SCIP_DEFAULT_NLP_DISABLE,
1880  NULL, NULL) );
1881 
1882  /* memory parameters */
1883  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1884  "memory/savefac",
1885  "fraction of maximal memory usage resulting in switch to memory saving mode",
1886  &(*set)->mem_savefac, FALSE, SCIP_DEFAULT_MEM_SAVEFAC, 0.0, 1.0,
1887  NULL, NULL) );
1888  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1889  "memory/arraygrowfac",
1890  "memory growing factor for dynamically allocated arrays",
1891  &(*set)->mem_arraygrowfac, TRUE, SCIP_DEFAULT_MEM_ARRAYGROWFAC, 1.0, 10.0,
1892  paramChgdArraygrowfac, NULL) );
1893  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1894  "memory/arraygrowinit",
1895  "initial size of dynamically allocated arrays",
1896  &(*set)->mem_arraygrowinit, TRUE, SCIP_DEFAULT_MEM_ARRAYGROWINIT, 0, INT_MAX,
1897  paramChgdArraygrowinit, NULL) );
1898  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1899  "memory/treegrowfac",
1900  "memory growing factor for tree array",
1901  &(*set)->mem_treegrowfac, TRUE, SCIP_DEFAULT_MEM_TREEGROWFAC, 1.0, 10.0,
1902  NULL, NULL) );
1903  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1904  "memory/treegrowinit",
1905  "initial size of tree array",
1906  &(*set)->mem_treegrowinit, TRUE, SCIP_DEFAULT_MEM_TREEGROWINIT, 0, INT_MAX,
1907  NULL, NULL) );
1908  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
1909  "memory/pathgrowfac",
1910  "memory growing factor for path array",
1911  &(*set)->mem_pathgrowfac, TRUE, SCIP_DEFAULT_MEM_PATHGROWFAC, 1.0, 10.0,
1912  NULL, NULL) );
1913  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
1914  "memory/pathgrowinit",
1915  "initial size of path array",
1916  &(*set)->mem_pathgrowinit, TRUE, SCIP_DEFAULT_MEM_PATHGROWINIT, 0, INT_MAX,
1917  NULL, NULL) );
1918 
1919  /* miscellaneous parameters */
1920  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1921  "misc/catchctrlc",
1922  "should the CTRL-C interrupt be caught by SCIP?",
1923  &(*set)->misc_catchctrlc, FALSE, SCIP_DEFAULT_MISC_CATCHCTRLC,
1924  NULL, NULL) );
1925  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1926  "misc/usevartable",
1927  "should a hashtable be used to map from variable names to variables?",
1928  &(*set)->misc_usevartable, FALSE, SCIP_DEFAULT_MISC_USEVARTABLE,
1929  NULL, NULL) );
1930  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1931  "misc/useconstable",
1932  "should a hashtable be used to map from constraint names to constraints?",
1933  &(*set)->misc_useconstable, FALSE, SCIP_DEFAULT_MISC_USECONSTABLE,
1934  NULL, NULL) );
1935  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1936  "misc/usesmalltables",
1937  "should smaller hashtables be used? yields better performance for small problems with about 100 variables",
1938  &(*set)->misc_usesmalltables, FALSE, SCIP_DEFAULT_MISC_USESMALLTABLES,
1939  NULL, NULL) );
1940 #if 0 /**@todo activate exactsolve parameter and finish implementation of solving MIPs exactly */
1941  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1942  "misc/exactsolve",
1943  "should the problem be solved exactly (with proven dual bounds)?",
1944  &(*set)->misc_exactsolve, FALSE, SCIP_DEFAULT_MISC_EXACTSOLVE,
1945  NULL, NULL) );
1946 #else
1947  (*set)->misc_exactsolve = SCIP_DEFAULT_MISC_EXACTSOLVE;
1948 #endif
1949 
1950  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1951  "misc/resetstat",
1952  "should the statistics be reset if the transformed problem is freed (in case of a Benders' decomposition this parameter should be set to FALSE)",
1953  &(*set)->misc_resetstat, FALSE, SCIP_DEFAULT_MISC_RESETSTAT,
1954  NULL, NULL) );
1955 
1956  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1957  "misc/improvingsols",
1958  "should only solutions be checked which improve the primal bound",
1959  &(*set)->misc_improvingsols, FALSE, SCIP_DEFAULT_MISC_IMPROVINGSOLS,
1960  NULL, NULL) );
1961  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1962  "misc/printreason",
1963  "should the reason be printed if a given start solution is infeasible",
1964  &(*set)->misc_printreason, FALSE, SCIP_DEFAULT_MISC_PRINTREASON,
1965  NULL, NULL) );
1966  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1967  "misc/estimexternmem",
1968  "should the usage of external memory be estimated?",
1969  &(*set)->misc_estimexternmem, FALSE, SCIP_DEFAULT_MISC_ESTIMEXTERNMEM,
1970  NULL, NULL) );
1971  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1972  "misc/avoidmemout",
1973  "try to avoid running into memory limit by restricting plugins like heuristics?",
1974  &(*set)->misc_avoidmemout, FALSE, SCIP_DEFAULT_MISC_AVOIDMEMOUT,
1975  NULL, NULL) );
1976  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1977  "misc/transorigsols",
1978  "should SCIP try to transfer original solutions to the transformed space (after presolving)?",
1979  &(*set)->misc_transorigsols, FALSE, SCIP_DEFAULT_MISC_TRANSORIGSOLS,
1980  NULL, NULL) );
1981  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1982  "misc/transsolsorig",
1983  "should SCIP try to transfer transformed solutions to the original space (after solving)?",
1984  &(*set)->misc_transsolsorig, FALSE, SCIP_DEFAULT_MISC_TRANSSOLSORIG,
1985  NULL, NULL) );
1986  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1987  "misc/calcintegral",
1988  "should SCIP calculate the primal dual integral value?",
1989  &(*set)->misc_calcintegral, FALSE, SCIP_DEFAULT_MISC_CALCINTEGRAL,
1990  NULL, NULL) );
1991  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1992  "misc/finitesolutionstore",
1993  "should SCIP try to remove infinite fixings from solutions copied to the solution store?",
1994  &(*set)->misc_finitesolstore, FALSE, SCIP_DEFAULT_MISC_FINITESOLSTORE,
1995  NULL, NULL) );
1996  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
1997  "misc/outputorigsol",
1998  "should the best solution be transformed to the orignal space and be output in command line run?",
1999  &(*set)->misc_outputorigsol, FALSE, SCIP_DEFAULT_MISC_OUTPUTORIGSOL,
2000  NULL, NULL) );
2001  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2002  "misc/allowstrongdualreds",
2003  "should strong dual reductions be allowed in propagation and presolving?",
2004  &(*set)->misc_allowstrongdualreds, FALSE, SCIP_DEFAULT_MISC_ALLOWSTRONGDUALREDS,
2005  NULL, NULL) );
2006  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2007  "misc/allowweakdualreds",
2008  "should weak dual reductions be allowed in propagation and presolving?",
2009  &(*set)->misc_allowweakdualreds, FALSE, SCIP_DEFAULT_MISC_ALLOWWEAKDUALREDS,
2010  NULL, NULL) );
2011  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2012  "misc/scaleobj",
2013  "should the objective function be scaled so that it is always integer?",
2014  &(*set)->misc_scaleobj, FALSE, SCIP_DEFAULT_MISC_SCALEOBJ,
2015  NULL, NULL) );
2016  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2017  "misc/showdivingstats",
2018  "should detailed statistics for diving heuristics be shown?",
2019  &(*set)->misc_showdivingstats, FALSE, SCIP_DEFAULT_MISC_SHOWDIVINGSTATS,
2020  NULL, NULL) );
2021 
2022  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2023  "misc/referencevalue",
2024  "objective value for reference purposes",
2025  &(*set)->misc_referencevalue, FALSE, SCIP_DEFAULT_MISC_REFERENCEVALUE, SCIP_REAL_MIN, SCIP_REAL_MAX,
2026  NULL, NULL) );
2027 
2028 #ifdef WITH_DEBUG_SOLUTION
2029  SCIP_CALL( SCIPsetAddStringParam(*set, messagehdlr, blkmem,
2030  "misc/debugsol",
2031  "path to a debug solution",
2032  &(*set)->misc_debugsol, FALSE, SCIP_DEFAULT_MISC_DEBUGSOLUTION,
2033  NULL, NULL) );
2034 #endif
2035 
2036  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2037  "misc/usesymmetry",
2038  "bitset describing used symmetry handling technique (0: off; 1: polyhedral (orbitopes and/or symresacks);" \
2039  " 2: orbital fixing; 3: orbitopes and orbital fixing; 4: Schreier Sims cuts; 5: Schreier Sims cuts and " \
2040  "orbitopes); 6: Schreier Sims cuts and orbital fixing; 7: Schreier Sims cuts, orbitopes, and orbital " \
2041  "fixing, see type_symmetry.h.",
2042  &(*set)->misc_usesymmetry, FALSE, SCIP_DEFAULT_MISC_USESYMMETRY, 0, 7,
2043  paramChgdUsesymmetry, NULL) );
2044 
2045  /* randomization parameters */
2046  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2047  "randomization/randomseedshift",
2048  "global shift of all random seeds in the plugins and the LP random seed",
2049  &(*set)->random_randomseedshift, FALSE, SCIP_DEFAULT_RANDOM_RANDSEEDSHIFT, 0, INT_MAX,
2050  NULL, NULL) );
2051 
2052  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2053  "randomization/permutationseed",
2054  "seed value for permuting the problem after reading/transformation (0: no permutation)",
2055  &(*set)->random_permutationseed, FALSE, SCIP_DEFAULT_RANDOM_PERMUTATIONSEED, 0, INT_MAX,
2056  NULL, NULL) );
2057 
2058  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2059  "randomization/permuteconss",
2060  "should order of constraints be permuted (depends on permutationseed)?",
2061  &(*set)->random_permuteconss, TRUE, SCIP_DEFAULT_RANDOM_PERMUTECONSS,
2062  NULL, NULL) );
2063 
2064  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2065  "randomization/permutevars",
2066  "should order of variables be permuted (depends on permutationseed)?",
2067  &(*set)->random_permutevars, TRUE, SCIP_DEFAULT_RANDOM_PERMUTEVARS,
2068  NULL, NULL) );
2069 
2070  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2071  "randomization/lpseed",
2072  "random seed for LP solver, e.g. for perturbations in the simplex (0: LP default)",
2073  &(*set)->random_randomseed, FALSE, SCIP_DEFAULT_RANDOM_LPSEED, 0, INT_MAX,
2074  NULL, NULL) );
2075 
2076  /* node selection */
2077  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
2078  "nodeselection/childsel",
2079  "child selection rule ('d'own, 'u'p, 'p'seudo costs, 'i'nference, 'l'p value, 'r'oot LP value difference, 'h'ybrid inference/root LP value difference)",
2080  &(*set)->nodesel_childsel, FALSE, SCIP_DEFAULT_NODESEL_CHILDSEL, "dupilrh",
2081  NULL, NULL) );
2082 
2083  /* numerical parameters */
2084  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2085  "numerics/infinity",
2086  "values larger than this are considered infinity",
2087  &(*set)->num_infinity, FALSE, SCIP_DEFAULT_INFINITY, 1e+10, SCIP_INVALID/10.0,
2088  paramChgdInfinity, NULL) );
2089  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2090  "numerics/epsilon",
2091  "absolute values smaller than this are considered zero",
2092  &(*set)->num_epsilon, FALSE, SCIP_DEFAULT_EPSILON, SCIP_MINEPSILON, SCIP_MAXEPSILON,
2093  NULL, NULL) );
2094  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2095  "numerics/sumepsilon",
2096  "absolute values of sums smaller than this are considered zero",
2097  &(*set)->num_sumepsilon, FALSE, SCIP_DEFAULT_SUMEPSILON, SCIP_MINEPSILON*1e+03, SCIP_MAXEPSILON,
2098  NULL, NULL) );
2099  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2100  "numerics/feastol",
2101  "feasibility tolerance for constraints",
2102  &(*set)->num_feastol, FALSE, SCIP_DEFAULT_FEASTOL, SCIP_MINEPSILON*1e+03, SCIP_MAXEPSILON,
2103  paramChgdFeastol, NULL) );
2104  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2105  "numerics/checkfeastolfac",
2106  "feasibility tolerance factor; for checking the feasibility of the best solution",
2107  &(*set)->num_checkfeastolfac, FALSE, SCIP_DEFAULT_CHECKFEASTOLFAC, 0.0, SCIP_REAL_MAX,
2108  NULL, NULL) );
2109  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2110  "numerics/lpfeastolfactor",
2111  "factor w.r.t. primal feasibility tolerance that determines default (and maximal) primal feasibility tolerance of LP solver",
2112  &(*set)->num_lpfeastolfactor, FALSE, SCIP_DEFAULT_LPFEASTOLFACTOR, 1e-6, 1.0,
2113  paramChgdLPFeastolFactor, NULL) );
2114  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2115  "numerics/dualfeastol",
2116  "feasibility tolerance for reduced costs in LP solution",
2117  &(*set)->num_dualfeastol, FALSE, SCIP_DEFAULT_DUALFEASTOL, SCIP_MINEPSILON*1e+03, SCIP_MAXEPSILON,
2118  paramChgdDualfeastol, NULL) );
2119  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2120  "numerics/barrierconvtol",
2121  "LP convergence tolerance used in barrier algorithm",
2122  &(*set)->num_barrierconvtol, TRUE, SCIP_DEFAULT_BARRIERCONVTOL, SCIP_MINEPSILON*1e+03, SCIP_MAXEPSILON,
2123  paramChgdBarrierconvtol, NULL) );
2124  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2125  "numerics/boundstreps",
2126  "minimal relative improve for strengthening bounds",
2127  &(*set)->num_boundstreps, TRUE, SCIP_DEFAULT_BOUNDSTREPS, SCIP_MINEPSILON*1e+03, SCIP_INVALID/10.0,
2128  NULL, NULL) );
2129  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2130  "numerics/pseudocosteps",
2131  "minimal variable distance value to use for branching pseudo cost updates",
2132  &(*set)->num_pseudocosteps, TRUE, SCIP_DEFAULT_PSEUDOCOSTEPS, SCIP_MINEPSILON*1e+03, 1.0,
2133  NULL, NULL) );
2134  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2135  "numerics/pseudocostdelta",
2136  "minimal objective distance value to use for branching pseudo cost updates",
2137  &(*set)->num_pseudocostdelta, TRUE, SCIP_DEFAULT_PSEUDOCOSTDELTA, 0.0, SCIP_REAL_MAX,
2138  NULL, NULL) );
2139  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2140  "numerics/recomputefac",
2141  "minimal decrease factor that causes the recomputation of a value (e.g., pseudo objective) instead of an update",
2142  &(*set)->num_recompfac, TRUE, SCIP_DEFAULT_RECOMPFAC, 0.0, SCIP_REAL_MAX,
2143  NULL, NULL) );
2144  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2145  "numerics/hugeval",
2146  "values larger than this are considered huge and should be handled separately (e.g., in activity computation)",
2147  &(*set)->num_hugeval, TRUE, SCIP_DEFAULT_HUGEVAL, 0.0, SCIP_INVALID/10.0,
2148  NULL, NULL) );
2149 
2150  /* presolving parameters */
2151  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2152  "presolving/maxrounds",
2153  "maximal number of presolving rounds (-1: unlimited, 0: off)",
2154  &(*set)->presol_maxrounds, FALSE, SCIP_DEFAULT_PRESOL_MAXROUNDS, -1, INT_MAX,
2155  NULL, NULL) );
2156  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2157  "presolving/abortfac",
2158  "abort presolve, if at most this fraction of the problem was changed in last presolve round",
2159  &(*set)->presol_abortfac, TRUE, SCIP_DEFAULT_PRESOL_ABORTFAC, 0.0, 1.0,
2160  NULL, NULL) );
2161  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2162  "presolving/maxrestarts",
2163  "maximal number of restarts (-1: unlimited)",
2164  &(*set)->presol_maxrestarts, FALSE, SCIP_DEFAULT_PRESOL_MAXRESTARTS, -1, INT_MAX,
2165  NULL, NULL) );
2166  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2167  "presolving/restartfac",
2168  "fraction of integer variables that were fixed in the root node triggering a restart with preprocessing after root node evaluation",
2169  &(*set)->presol_restartfac, TRUE, SCIP_DEFAULT_PRESOL_RESTARTFAC, 0.0, 1.0,
2170  NULL, NULL) );
2171  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2172  "presolving/clqtablefac",
2173  "limit on number of entries in clique table relative to number of problem nonzeros",
2174  &(*set)->presol_clqtablefac, TRUE, SCIP_DEFAULT_PRESOL_CLQTABLEFAC, 0.0, SCIP_REAL_MAX,
2175  NULL, NULL) );
2176  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2177  "presolving/immrestartfac",
2178  "fraction of integer variables that were fixed in the root node triggering an immediate restart with preprocessing",
2179  &(*set)->presol_immrestartfac, TRUE, SCIP_DEFAULT_PRESOL_IMMRESTARTFAC, 0.0, 1.0,
2180  NULL, NULL) );
2181  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2182  "presolving/subrestartfac",
2183  "fraction of integer variables that were globally fixed during the solving process triggering a restart with preprocessing",
2184  &(*set)->presol_subrestartfac, TRUE, SCIP_DEFAULT_PRESOL_SUBRESTARTFAC, 0.0, 1.0,
2185  NULL, NULL) );
2186  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2187  "presolving/restartminred",
2188  "minimal fraction of integer variables removed after restart to allow for an additional restart",
2189  &(*set)->presol_restartminred, TRUE, SCIP_DEFAULT_PRESOL_RESTARTMINRED, 0.0, 1.0,
2190  NULL, NULL) );
2191  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2192  "presolving/donotmultaggr",
2193  "should multi-aggregation of variables be forbidden?",
2194  &(*set)->presol_donotmultaggr, TRUE, SCIP_DEFAULT_PRESOL_DONOTMULTAGGR,
2195  NULL, NULL) );
2196  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2197  "presolving/donotaggr",
2198  "should aggregation of variables be forbidden?",
2199  &(*set)->presol_donotaggr, TRUE, SCIP_DEFAULT_PRESOL_DONOTAGGR,
2200  NULL, NULL) );
2201 
2202  /* pricing parameters */
2203  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2204  "pricing/maxvars",
2205  "maximal number of variables priced in per pricing round",
2206  &(*set)->price_maxvars, FALSE, SCIP_DEFAULT_PRICE_MAXVARS, 1, INT_MAX,
2207  NULL, NULL) );
2208  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2209  "pricing/maxvarsroot",
2210  "maximal number of priced variables at the root node",
2211  &(*set)->price_maxvarsroot, FALSE, SCIP_DEFAULT_PRICE_MAXVARSROOT, 1, INT_MAX,
2212  NULL, NULL) );
2213  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2214  "pricing/abortfac",
2215  "pricing is aborted, if fac * pricing/maxvars pricing candidates were found",
2216  &(*set)->price_abortfac, FALSE, SCIP_DEFAULT_PRICE_ABORTFAC, 1.0, SCIP_REAL_MAX,
2217  NULL, NULL) );
2218  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2219  "pricing/delvars",
2220  "should variables created at the current node be deleted when the node is solved in case they are not present in the LP anymore?",
2221  &(*set)->price_delvars, FALSE, SCIP_DEFAULT_PRICE_DELVARS,
2222  NULL, NULL) );
2223  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2224  "pricing/delvarsroot",
2225  "should variables created at the root node be deleted when the root is solved in case they are not present in the LP anymore?",
2226  &(*set)->price_delvarsroot, FALSE, SCIP_DEFAULT_PRICE_DELVARSROOT,
2227  NULL, NULL) );
2228 
2229  /* Decomposition parameters */
2230  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2231  "decomposition/benderslabels",
2232  "should the variables be labelled for the application of Benders' decomposition?",
2233  &(*set)->decomp_benderslabels, FALSE, SCIP_DEFAULT_DECOMP_BENDERSLABELS,
2234  NULL, NULL) );
2235  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2236  "decomposition/applybenders",
2237  "if a decomposition exists, should Benders' decomposition be applied?",
2238  &(*set)->decomp_applybenders, FALSE, SCIP_DEFAULT_DECOMP_APPLYBENDERS,
2239  NULL, NULL) );
2240  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2241  "decomposition/maxgraphedge",
2242  "maximum number of edges in block graph computation (-1: no limit, 0: disable block graph computation)",
2243  &(*set)->decomp_maxgraphedge, FALSE, SCIP_DEFAULT_DECOMP_MAXGRAPHEDGE, -1, INT_MAX,
2244  NULL, NULL) );
2245  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2246  "decomposition/disablemeasures",
2247  "disable expensive measures",
2248  &(*set)->decomp_disablemeasures, FALSE, SCIP_DEFAULT_DECOMP_DISABLEMEASURES,
2249  NULL, NULL) );
2250 
2251  /* Benders' decomposition parameters */
2252  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2253  "benders/solutiontol",
2254  "the tolerance used for checking optimality in Benders' decomposition. tol where optimality is given by LB + tol > UB.",
2255  &(*set)->benders_soltol, FALSE, SCIP_DEFAULT_BENDERS_SOLTOL, 0.0, SCIP_REAL_MAX,
2256  NULL, NULL) );
2257  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2258  "benders/cutlpsol",
2259  "should Benders' cuts be generated from the solution to the LP relaxation?",
2260  &(*set)->benders_cutlpsol, FALSE, SCIP_DEFAULT_BENDERS_CUTLPSOL,
2261  NULL, NULL) );
2262  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2263  "benders/copybenders",
2264  "should Benders' decomposition be copied for use in sub-SCIPs?",
2265  &(*set)->benders_copybenders, FALSE, SCIP_DEFAULT_BENDERS_COPYBENDERS,
2266  NULL, NULL) );
2267 
2268  /* propagation parameters */
2269  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2270  "propagating/maxrounds",
2271  "maximal number of propagation rounds per node (-1: unlimited)",
2272  &(*set)->prop_maxrounds, FALSE, SCIP_DEFAULT_PROP_MAXROUNDS, -1, INT_MAX,
2273  NULL, NULL) );
2274  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2275  "propagating/maxroundsroot",
2276  "maximal number of propagation rounds in the root node (-1: unlimited)",
2277  &(*set)->prop_maxroundsroot, FALSE, SCIP_DEFAULT_PROP_MAXROUNDSROOT, -1, INT_MAX,
2278  NULL, NULL) );
2279  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2280  "propagating/abortoncutoff",
2281  "should propagation be aborted immediately? setting this to FALSE could help conflict analysis to produce more conflict constraints",
2282  &(*set)->prop_abortoncutoff, FALSE, SCIP_DEFAULT_PROP_ABORTONCUTOFF,
2283  NULL, NULL) );
2284 
2285  /* reoptimization */
2286  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2287  "reoptimization/enable",
2288  "should reoptimization used?",
2289  &(*set)->reopt_enable, FALSE, SCIP_DEFAULT_REOPT_ENABLE,
2290  paramChgdEnableReopt, NULL) );
2291  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2292  "reoptimization/maxsavednodes",
2293  "maximal number of saved nodes",
2294  &(*set)->reopt_maxsavednodes, TRUE, SCIP_DEFAULT_REOPT_MAXSAVEDNODES, -1, INT_MAX,
2295  NULL, NULL) );
2296  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2297  "reoptimization/maxdiffofnodes",
2298  "maximal number of bound changes between two stored nodes on one path",
2299  &(*set)->reopt_maxdiffofnodes, TRUE, SCIP_DEFAULT_REOPT_MAXDIFFOFNODES, 0, INT_MAX,
2300  NULL, NULL) );
2301  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2302  "reoptimization/globalcons/sepainfsubtrees",
2303  "save global constraints to separate infeasible subtrees.",
2304  &(*set)->reopt_sepaglbinfsubtrees, FALSE, SCIP_DEFAULT_REOPT_SEPAGLBINFSUBTREES,
2305  NULL, NULL) );
2306  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2307  "reoptimization/sepabestsol",
2308  "separate the optimal solution, i.e., for constrained shortest path",
2309  &(*set)->reopt_sepabestsol, TRUE, SCIP_DEFAULT_REOPT_SEPABESTSOL,
2310  NULL, NULL) );
2311  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2312  "reoptimization/storevarhistory",
2313  "use variable history of the previous solve if the objctive function has changed only slightly",
2314  &(*set)->reopt_storevarhistory, TRUE, SCIP_DEFAULT_REOPT_STOREVARHISTOTY,
2315  NULL, NULL) );
2316  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2317  "reoptimization/usepscost",
2318  "re-use pseudo costs if the objective function changed only slightly ",
2319  &(*set)->reopt_usepscost, TRUE, SCIP_DEFAULT_REOPT_USEPSCOST,
2320  NULL, NULL) );
2321  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2322  "reoptimization/solvelp",
2323  "at which reopttype should the LP be solved? (1: transit, 3: strong branched, 4: w/ added logicor, 5: only leafs).",
2324  &(*set)->reopt_solvelp, TRUE, SCIP_DEFAULT_REOPT_SOLVELP, 1, 5,
2325  NULL, NULL) );
2326  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2327  "reoptimization/solvelpdiff",
2328  "maximal number of bound changes at node to skip solving the LP",
2329  &(*set)->reopt_solvelpdiff, TRUE, SCIP_DEFAULT_REOPT_SOLVELPDIFF, 0, INT_MAX,
2330  NULL, NULL) );
2331  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2332  "reoptimization/savesols",
2333  "number of best solutions which should be saved for the following runs. (-1: save all)",
2334  &(*set)->reopt_savesols, TRUE, SCIP_DEFAULT_REOPT_SAVESOLS, 0, INT_MAX,
2335  NULL, NULL) );
2336  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2337  "reoptimization/objsimrootLP",
2338  "similarity of two sequential objective function to disable solving the root LP.",
2339  &(*set)->reopt_objsimrootlp, TRUE, SCIP_DEFAULT_REOPT_OBJSIMROOTLP, -1.0, 1.0,
2340  NULL, NULL) );
2341  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2342  "reoptimization/objsimsol",
2343  "similarity of two objective functions to re-use stored solutions",
2344  &(*set)->reopt_objsimsol, TRUE, SCIP_DEFAULT_REOPT_OBJSIMSOL, -1.0, 1.0,
2345  NULL, NULL) );
2346  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2347  "reoptimization/delay",
2348  "minimum similarity for using reoptimization of the search tree.",
2349  &(*set)->reopt_objsimdelay, TRUE, SCIP_DEFAULT_REOPT_OBJSIMDELAY, -1.0, 1.0,
2350  NULL, NULL) );
2351  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2352  "reoptimization/commontimelimit",
2353  "time limit over all reoptimization rounds?.",
2354  &(*set)->reopt_commontimelimit, TRUE, SCIP_DEFAULT_REOPT_COMMONTIMELIMIT,
2355  NULL, NULL) );
2356  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2357  "reoptimization/shrinkinner",
2358  "replace branched inner nodes by their child nodes, if the number of bound changes is not to large",
2359  &(*set)->reopt_shrinkinner, TRUE, SCIP_DEFAULT_REOPT_SHRINKINNER,
2360  NULL, NULL) );
2361  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2362  "reoptimization/strongbranchinginit",
2363  "try to fix variables at the root node before reoptimizing by probing like strong branching",
2364  &(*set)->reopt_sbinit, TRUE, SCIP_DEFAULT_REOPT_STRONGBRANCHINIT,
2365  NULL, NULL) );
2366  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2367  "reoptimization/reducetofrontier",
2368  "delete stored nodes which were not reoptimized",
2369  &(*set)->reopt_reducetofrontier, TRUE, SCIP_DEFAULT_REOPT_REDUCETOFRONTIER,
2370  NULL, NULL) );
2371  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2372  "reoptimization/forceheurrestart",
2373  "force a restart if the last n optimal solutions were found by heuristic reoptsols",
2374  &(*set)->reopt_forceheurrestart, TRUE, SCIP_DEFAULT_REOPT_FORCEHEURRESTART, 1, INT_MAX,
2375  NULL, NULL) );
2376  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2377  "reoptimization/saveconsprop",
2378  "save constraint propagations",
2379  &(*set)->reopt_saveconsprop, TRUE, SCIP_DEFAULT_REOPT_SAVECONSPROP,
2380  NULL, NULL) );
2381  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2382  "reoptimization/usesplitcons", "use constraints to reconstruct the subtree pruned be dual reduction when reactivating the node",
2383  &(*set)->reopt_usesplitcons, TRUE, SCIP_DEFAULT_REOPT_USESPLITCONS,
2384  NULL, NULL) );
2385  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
2386  "reoptimization/varorderinterdiction", "use 'd'efault, 'r'andom or a variable ordering based on 'i'nference score for interdiction branching used during reoptimization",
2387  &(*set)->reopt_varorderinterdiction, TRUE, SCIP_DEFAULT_REOPT_VARORDERINTERDICTION, "dir",
2388  NULL, NULL) );
2389  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2390  "reoptimization/usecuts",
2391  "reoptimize cuts found at the root node",
2392  &(*set)->reopt_usecuts, TRUE, SCIP_DEFAULT_REOPT_USECUTS,
2393  NULL, NULL) );
2394  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2395  "reoptimization/maxcutage",
2396  "maximal age of a cut to be use for reoptimization",
2397  &(*set)->reopt_maxcutage, TRUE, SCIP_DEFAULT_REOPT_MAXCUTAGE, 0, INT_MAX,
2398  NULL, NULL) );
2399 
2400  /* separation parameters */
2401  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2402  "separating/maxbounddist",
2403  "maximal relative distance from current node's dual bound to primal bound compared to best node's dual bound for applying separation (0.0: only on current best node, 1.0: on all nodes)",
2404  &(*set)->sepa_maxbounddist, FALSE, SCIP_DEFAULT_SEPA_MAXBOUNDDIST, 0.0, 1.0,
2405  NULL, NULL) );
2406  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2407  "separating/maxlocalbounddist",
2408  "maximal relative distance from current node's dual bound to primal bound compared to best node's dual bound for applying local separation (0.0: only on current best node, 1.0: on all nodes)",
2409  &(*set)->sepa_maxlocalbounddist, FALSE, SCIP_DEFAULT_SEPA_MAXLOCALBOUNDDIST, 0.0, 1.0,
2410  NULL, NULL) );
2411  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2412  "separating/maxcoefratio",
2413  "maximal ratio between coefficients in strongcg, cmir, and flowcover cuts",
2414  &(*set)->sepa_maxcoefratio, FALSE, SCIP_DEFAULT_SEPA_MAXCOEFRATIO, 1.0, SCIP_INVALID/10.0,
2415  NULL, NULL) );
2416  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2417  "separating/maxcoefratiofacrowprep",
2418  "maximal ratio between coefficients (as factor of 1/feastol) to ensure in rowprep cleanup",
2419  &(*set)->sepa_maxcoefratiofacrowprep, FALSE, SCIP_DEFAULT_SEPA_MAXCOEFRATIOFACROWPREP, 0.0, SCIP_REAL_MAX,
2420  NULL, NULL) );
2421  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2422  "separating/minefficacy",
2423  "minimal efficacy for a cut to enter the LP",
2424  &(*set)->sepa_minefficacy, FALSE, SCIP_DEFAULT_SEPA_MINEFFICACY, 0.0, SCIP_INVALID/10.0,
2425  NULL, NULL) );
2426  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2427  "separating/minefficacyroot",
2428  "minimal efficacy for a cut to enter the LP in the root node",
2429  &(*set)->sepa_minefficacyroot, FALSE, SCIP_DEFAULT_SEPA_MINEFFICACYROOT, 0.0, SCIP_INVALID/10.0,
2430  NULL, NULL) );
2431  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2432  "separating/minactivityquot",
2433  "minimum cut activity quotient to convert cuts into constraints during a restart (0.0: all cuts are converted)",
2434  &(*set)->sepa_minactivityquot, FALSE, SCIP_DEFAULT_SEPA_MINACTIVITYQUOT, 0.0, 1.0,
2435  NULL, NULL) );
2436  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
2437  "separating/orthofunc",
2438  "function used for calc. scalar prod. in orthogonality test ('e'uclidean, 'd'iscrete)",
2439  &(*set)->sepa_orthofunc, TRUE, SCIP_DEFAULT_SEPA_ORTHOFUNC, "ed",
2440  NULL, NULL) );
2441  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
2442  "separating/efficacynorm",
2443  "row norm to use for efficacy calculation ('e'uclidean, 'm'aximum, 's'um, 'd'iscrete)",
2444  &(*set)->sepa_efficacynorm, TRUE, SCIP_DEFAULT_SEPA_EFFICACYNORM, "emsd",
2445  NULL, NULL) );
2446  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
2447  "separating/cutselrestart",
2448  "cut selection during restart ('a'ge, activity 'q'uotient)",
2449  &(*set)->sepa_cutselrestart, TRUE, SCIP_DEFAULT_SEPA_CUTSELRESTART, "aq",
2450  NULL, NULL) );
2451  SCIP_CALL( SCIPsetAddCharParam(*set, messagehdlr, blkmem,
2452  "separating/cutselsubscip",
2453  "cut selection for sub SCIPs ('a'ge, activity 'q'uotient)",
2454  &(*set)->sepa_cutselsubscip, TRUE, SCIP_DEFAULT_SEPA_CUTSELSUBSCIP, "aq",
2455  NULL, NULL) );
2456  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2457  "separating/filtercutpoolrel",
2458  "should cutpool separate only cuts with high relative efficacy?",
2459  &(*set)->sepa_filtercutpoolrel, TRUE, SCIP_DEFAULT_SEPA_FILTERCUTPOOLREL,
2460  NULL, NULL) );
2461  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2462  "separating/maxruns",
2463  "maximal number of runs for which separation is enabled (-1: unlimited)",
2464  &(*set)->sepa_maxruns, TRUE, SCIP_DEFAULT_SEPA_MAXRUNS, -1, INT_MAX,
2465  NULL, NULL) );
2466  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2467  "separating/maxrounds",
2468  "maximal number of separation rounds per node (-1: unlimited)",
2469  &(*set)->sepa_maxrounds, FALSE, SCIP_DEFAULT_SEPA_MAXROUNDS, -1, INT_MAX,
2470  NULL, NULL) );
2471  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2472  "separating/maxroundsroot",
2473  "maximal number of separation rounds in the root node (-1: unlimited)",
2474  &(*set)->sepa_maxroundsroot, FALSE, SCIP_DEFAULT_SEPA_MAXROUNDSROOT, -1, INT_MAX,
2475  NULL, NULL) );
2476  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2477  "separating/maxroundsrootsubrun",
2478  "maximal number of separation rounds in the root node of a subsequent run (-1: unlimited)",
2479  &(*set)->sepa_maxroundsrootsubrun, TRUE, SCIP_DEFAULT_SEPA_MAXROUNDSROOTSUBRUN, -1, INT_MAX,
2480  NULL, NULL) );
2481  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2482  "separating/maxaddrounds",
2483  "maximal additional number of separation rounds in subsequent price-and-cut loops (-1: no additional restriction)",
2484  &(*set)->sepa_maxaddrounds, TRUE, SCIP_DEFAULT_SEPA_MAXADDROUNDS, -1, INT_MAX,
2485  NULL, NULL) );
2486  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2487  "separating/maxstallrounds",
2488  "maximal number of consecutive separation rounds without objective or integrality improvement in local nodes (-1: no additional restriction)",
2489  &(*set)->sepa_maxstallrounds, FALSE, SCIP_DEFAULT_SEPA_MAXSTALLROUNDS, -1, INT_MAX,
2490  NULL, NULL) );
2491  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2492  "separating/maxstallroundsroot",
2493  "maximal number of consecutive separation rounds without objective or integrality improvement in the root node (-1: no additional restriction)",
2494  &(*set)->sepa_maxstallroundsroot, FALSE, SCIP_DEFAULT_SEPA_MAXSTALLROUNDSROOT, -1, INT_MAX,
2495  NULL, NULL) );
2496  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2497  "separating/maxcuts",
2498  "maximal number of cuts separated per separation round (0: disable local separation)",
2499  &(*set)->sepa_maxcuts, FALSE, SCIP_DEFAULT_SEPA_MAXCUTS, 0, INT_MAX,
2500  NULL, NULL) );
2501  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2502  "separating/maxcutsroot",
2503  "maximal number of separated cuts at the root node (0: disable root node separation)",
2504  &(*set)->sepa_maxcutsroot, FALSE, SCIP_DEFAULT_SEPA_MAXCUTSROOT, 0, INT_MAX,
2505  NULL, NULL) );
2506  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2507  "separating/cutagelimit",
2508  "maximum age a cut can reach before it is deleted from the global cut pool, or -1 to keep all cuts",
2509  &(*set)->sepa_cutagelimit, TRUE, SCIP_DEFAULT_SEPA_CUTAGELIMIT, -1, INT_MAX,
2510  NULL, NULL) );
2511  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2512  "separating/poolfreq",
2513  "separation frequency for the global cut pool (-1: disable global cut pool, 0: only separate pool at the root)",
2514  &(*set)->sepa_poolfreq, FALSE, SCIP_DEFAULT_SEPA_POOLFREQ, -1, SCIP_MAXTREEDEPTH,
2515  NULL, NULL) );
2516 
2517  /* parallel parameters */
2518  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2519  "parallel/mode",
2520  "parallel optimisation mode, 0: opportunistic or 1: deterministic.",
2521  &(*set)->parallel_mode, FALSE, SCIP_DEFAULT_PARALLEL_MODE, 0, 1,
2522  NULL, NULL) );
2523  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2524  "parallel/minnthreads",
2525  "the minimum number of threads used during parallel solve",
2526  &(*set)->parallel_minnthreads, FALSE, SCIP_DEFAULT_PARALLEL_MINNTHREADS, 0, 64,
2527  NULL, NULL) );
2528  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2529  "parallel/maxnthreads",
2530  "the maximum number of threads used during parallel solve",
2531  &(*set)->parallel_maxnthreads, FALSE, SCIP_DEFAULT_PARALLEL_MAXNTHREADS, 0, 64,
2532  NULL, NULL) );
2533 
2534  /* concurrent solver parameters */
2535  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2536  "concurrent/changeseeds",
2537  "set different random seeds in each concurrent solver?",
2538  &(*set)->concurrent_changeseeds, FALSE, SCIP_DEFAULT_CONCURRENT_CHANGESEEDS,
2539  NULL, NULL) );
2540  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2541  "concurrent/changechildsel",
2542  "use different child selection rules in each concurrent solver?",
2543  &(*set)->concurrent_changechildsel, FALSE, SCIP_DEFAULT_CONCURRENT_CHANGECHILDSEL,
2544  NULL, NULL) );
2545  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2546  "concurrent/commvarbnds",
2547  "should the concurrent solvers communicate global variable bound changes?",
2548  &(*set)->concurrent_commvarbnds, FALSE, SCIP_DEFAULT_CONCURRENT_COMMVARBNDS,
2549  NULL, NULL) );
2550  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2551  "concurrent/presolvebefore",
2552  "should the problem be presolved before it is copied to the concurrent solvers?",
2553  &(*set)->concurrent_presolvebefore, FALSE, SCIP_DEFAULT_CONCURRENT_PRESOLVEBEFORE,
2554  NULL, NULL) );
2555  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2556  "concurrent/initseed",
2557  "maximum number of solutions that will be shared in a one synchronization",
2558  &(*set)->concurrent_initseed, FALSE, SCIP_DEFAULT_CONCURRENT_INITSEED, 0, INT_MAX,
2559  NULL, NULL) );
2560  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2561  "concurrent/sync/freqinit",
2562  "initial frequency of synchronization with other threads",
2563  &(*set)->concurrent_freqinit, FALSE, SCIP_DEFAULT_CONCURRENT_FREQINIT, 0.0, SCIP_REAL_MAX,
2564  NULL, NULL) );
2565  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2566  "concurrent/sync/freqmax",
2567  "maximal frequency of synchronization with other threads",
2568  &(*set)->concurrent_freqmax, FALSE, SCIP_DEFAULT_CONCURRENT_FREQMAX, 0.0, SCIP_REAL_MAX,
2569  NULL, NULL) );
2570  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2571  "concurrent/sync/freqfactor",
2572  "factor by which the frequency of synchronization is changed",
2573  &(*set)->concurrent_freqfactor, FALSE, SCIP_DEFAULT_CONCURRENT_FREQFACTOR, 1.0, SCIP_REAL_MAX,
2574  NULL, NULL) );
2575  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2576  "concurrent/sync/targetprogress",
2577  "when adapting the synchronization frequency this value is the targeted relative difference by which the absolute gap decreases per synchronization",
2578  &(*set)->concurrent_targetprogress, FALSE, SCIP_DEFAULT_CONCURRENT_TARGETPROGRESS, 0.0, SCIP_REAL_MAX,
2579  NULL, NULL) );
2580  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2581  "concurrent/sync/maxnsols",
2582  "maximum number of solutions that will be shared in a single synchronization",
2583  &(*set)->concurrent_maxnsols, FALSE, SCIP_DEFAULT_CONCURRENT_MAXNSOLS, 0, 1000,
2584  NULL, NULL) );
2585  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2586  "concurrent/sync/maxnsyncdelay",
2587  "maximum number of synchronizations before reading is enforced regardless of delay",
2588  &(*set)->concurrent_maxnsyncdelay, TRUE, SCIP_DEFAULT_CONCURRENT_MAXNSYNCDELAY, 0, 100,
2589  NULL, NULL) );
2590  SCIP_CALL( SCIPsetAddRealParam(*set, messagehdlr, blkmem,
2591  "concurrent/sync/minsyncdelay",
2592  "minimum delay before synchronization data is read",
2593  &(*set)->concurrent_minsyncdelay, FALSE, SCIP_DEFAULT_CONCURRENT_MINSYNCDELAY, 0.0, SCIP_REAL_MAX,
2594  NULL, NULL) );
2595  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2596  "concurrent/sync/nbestsols",
2597  "how many of the N best solutions should be considered for synchronization?",
2598  &(*set)->concurrent_nbestsols, FALSE, SCIP_DEFAULT_CONCURRENT_NBESTSOLS, 0, INT_MAX,
2599  NULL, NULL) );
2600  SCIP_CALL( SCIPsetAddStringParam(*set, messagehdlr, blkmem,
2601  "concurrent/paramsetprefix",
2602  "path prefix for parameter setting files of concurrent solvers",
2603  &(*set)->concurrent_paramsetprefix, FALSE, SCIP_DEFAULT_CONCURRENT_PARAMSETPREFIX,
2604  NULL, NULL) );
2605 
2606  /* timing parameters */
2607  assert(sizeof(int) == sizeof(SCIP_CLOCKTYPE)); /*lint !e506*/
2608  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2609  "timing/clocktype",
2610  "default clock type (1: CPU user seconds, 2: wall clock time)",
2611  (int*)&(*set)->time_clocktype, FALSE, (int)SCIP_DEFAULT_TIME_CLOCKTYPE, 1, 2,
2612  NULL, NULL) );
2613  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2614  "timing/enabled",
2615  "is timing enabled?",
2616  &(*set)->time_enabled, FALSE, SCIP_DEFAULT_TIME_ENABLED,
2617  NULL, NULL) );
2618  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2619  "timing/reading",
2620  "belongs reading time to solving time?",
2621  &(*set)->time_reading, FALSE, SCIP_DEFAULT_TIME_READING,
2622  NULL, NULL) );
2623  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2624  "timing/rareclockcheck",
2625  "should clock checks of solving time be performed less frequently (note: time limit could be exceeded slightly)",
2626  &(*set)->time_rareclockcheck, FALSE, SCIP_DEFAULT_TIME_RARECLOCKCHECK,
2627  NULL, NULL) );
2628  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2629  "timing/statistictiming",
2630  "should timing for statistic output be performed?",
2631  &(*set)->time_statistictiming, FALSE, SCIP_DEFAULT_TIME_STATISTICTIMING,
2632  paramChgdStatistictiming, NULL) );
2633  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2634  "timing/nlpieval",
2635  "should time for evaluation in NLP solves be measured?",
2636  &(*set)->time_nlpieval, FALSE, SCIP_DEFAULT_TIME_NLPIEVAL,
2637  NULL, NULL) );
2638 
2639  /* visualization parameters */
2640  SCIP_CALL( SCIPsetAddStringParam(*set, messagehdlr, blkmem,
2641  "visual/vbcfilename",
2642  "name of the VBC tool output file, or - if no VBC tool output should be created",
2643  &(*set)->visual_vbcfilename, FALSE, SCIP_DEFAULT_VISUAL_VBCFILENAME,
2644  NULL, NULL) );
2645  SCIP_CALL( SCIPsetAddStringParam(*set, messagehdlr, blkmem,
2646  "visual/bakfilename",
2647  "name of the BAK tool output file, or - if no BAK tool output should be created",
2648  &(*set)->visual_bakfilename, FALSE, SCIP_DEFAULT_VISUAL_BAKFILENAME,
2649  NULL, NULL) );
2650  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2651  "visual/realtime",
2652  "should the real solving time be used instead of a time step counter in visualization?",
2653  &(*set)->visual_realtime, FALSE, SCIP_DEFAULT_VISUAL_REALTIME,
2654  NULL, NULL) );
2655  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2656  "visual/dispsols",
2657  "should the node where solutions are found be visualized?",
2658  &(*set)->visual_dispsols, FALSE, SCIP_DEFAULT_VISUAL_DISPSOLS,
2659  NULL, NULL) );
2660  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2661  "visual/displb",
2662  "should lower bound information be visualized?",
2663  &(*set)->visual_displb, FALSE, SCIP_DEFAULT_VISUAL_DISPLB,
2664  NULL, NULL) );
2665  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2666  "visual/objextern",
2667  "should be output the external value of the objective?",
2668  &(*set)->visual_objextern, FALSE, SCIP_DEFAULT_VISUAL_OBJEXTERN,
2669  NULL, NULL) );
2670 
2671  /* Reading parameters */
2672  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2673  "reading/initialconss",
2674  "should model constraints be marked as initial?",
2675  &(*set)->read_initialconss, FALSE, SCIP_DEFAULT_READ_INITIALCONSS,
2676  NULL, NULL) );
2677  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2678  "reading/dynamicconss",
2679  "should model constraints be subject to aging?",
2680  &(*set)->read_dynamicconss, FALSE, SCIP_DEFAULT_READ_DYNAMICCONSS,
2681  NULL, NULL) );
2682  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2683  "reading/dynamiccols",
2684  "should columns be added and removed dynamically to the LP?",
2685  &(*set)->read_dynamiccols, FALSE, SCIP_DEFAULT_READ_DYNAMICCOLS,
2686  NULL, NULL) );
2687  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2688  "reading/dynamicrows",
2689  "should rows be added and removed dynamically to the LP?",
2690  &(*set)->read_dynamicrows, FALSE, SCIP_DEFAULT_READ_DYNAMICROWS,
2691  NULL, NULL) );
2692 
2693  /* Writing parameters */
2694  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2695  "write/allconss",
2696  "should all constraints be written (including the redundant constraints)?",
2697  &(*set)->write_allconss, FALSE, SCIP_DEFAULT_WRITE_ALLCONSS,
2698  NULL, NULL) );
2699  SCIP_CALL( SCIPsetAddBoolParam(*set, messagehdlr, blkmem,
2700  "write/printzeros",
2701  "should variables set to zero be printed?",
2702  &(*set)->write_printzeros, FALSE, SCIP_DEFAULT_PRINTZEROS,
2703  NULL, NULL) );
2704  SCIP_CALL( SCIPsetAddIntParam(*set, messagehdlr, blkmem,
2705  "write/genericnamesoffset",
2706  "when writing a generic problem the index for the first variable should start with?",
2707  &(*set)->write_genoffset, FALSE, SCIP_DEFAULT_WRITE_GENNAMES_OFFSET, 0, INT_MAX/2,
2708  NULL, NULL) );
2709 
2710  return SCIP_OKAY;
2711 }
2712 
2713 /** frees global SCIP settings */
2715  SCIP_SET** set, /**< pointer to SCIP settings */
2716  BMS_BLKMEM* blkmem /**< block memory */
2717  )
2718 {
2719  int i;
2720 
2721  assert(set != NULL);
2722 
2723  if( *set == NULL )
2724  return SCIP_OKAY;
2725 
2726  /* free parameter set */
2727  SCIPparamsetFree(&(*set)->paramset, blkmem);
2728 
2729  /* free file readers */
2730  for( i = 0; i < (*set)->nreaders; ++i )
2731  {
2732  SCIP_CALL( SCIPreaderFree(&(*set)->readers[i], *set) );
2733  }
2734  BMSfreeMemoryArrayNull(&(*set)->readers);
2735 
2736  /* free variable pricers */
2737  for( i = 0; i < (*set)->npricers; ++i )
2738  {
2739  SCIP_CALL( SCIPpricerFree(&(*set)->pricers[i], *set) );
2740  }
2741  BMSfreeMemoryArrayNull(&(*set)->pricers);
2742 
2743  /* free Benders' decomposition */
2744  for( i = 0; i < (*set)->nbenders; ++i )
2745  {
2746  SCIP_CALL( SCIPbendersFree(&(*set)->benders[i], *set) );
2747  }
2748  BMSfreeMemoryArrayNull(&(*set)->benders);
2749 
2750  /* free constraint handlers */
2751  for( i = 0; i < (*set)->nconshdlrs; ++i )
2752  {
2753  SCIP_CALL( SCIPconshdlrFree(&(*set)->conshdlrs[i], *set) );
2754  }
2755  BMSfreeMemoryArrayNull(&(*set)->conshdlrs);
2756  BMSfreeMemoryArrayNull(&(*set)->conshdlrs_sepa);
2757  BMSfreeMemoryArrayNull(&(*set)->conshdlrs_enfo);
2758  BMSfreeMemoryArrayNull(&(*set)->conshdlrs_include);
2759 
2760  /* free conflict handlers */
2761  for( i = 0; i < (*set)->nconflicthdlrs; ++i )
2762  {
2763  SCIP_CALL( SCIPconflicthdlrFree(&(*set)->conflicthdlrs[i], *set) );
2764  }
2765  BMSfreeMemoryArrayNull(&(*set)->conflicthdlrs);
2766 
2767  /* free presolvers */
2768  for( i = 0; i < (*set)->npresols; ++i )
2769  {
2770  SCIP_CALL( SCIPpresolFree(&(*set)->presols[i], *set) );
2771  }
2772  BMSfreeMemoryArrayNull(&(*set)->presols);
2773 
2774  /* free relaxators */
2775  for( i = 0; i < (*set)->nrelaxs; ++i )
2776  {
2777  SCIP_CALL( SCIPrelaxFree(&(*set)->relaxs[i], *set) );
2778  }
2779  BMSfreeMemoryArrayNull(&(*set)->relaxs);
2780 
2781  /* free separators */
2782  for( i = 0; i < (*set)->nsepas; ++i )
2783  {
2784  SCIP_CALL( SCIPsepaFree(&(*set)->sepas[i], *set) );
2785  }
2786  BMSfreeMemoryArrayNull(&(*set)->sepas);
2787 
2788  /* free cut selectors */
2789  for( i = 0; i < (*set)->ncutsels; ++i)
2790  {
2791  SCIP_CALL( SCIPcutselFree(&(*set)->cutsels[i], *set) );
2792  }
2793  BMSfreeMemoryArrayNull(&(*set)->cutsels);
2794 
2795  /* free propagators */
2796  for( i = 0; i < (*set)->nprops; ++i )
2797  {
2798  SCIP_CALL( SCIPpropFree(&(*set)->props[i], *set) );
2799  }
2800  BMSfreeMemoryArrayNull(&(*set)->props);
2801  BMSfreeMemoryArrayNull(&(*set)->props_presol);
2802 
2803  /* free primal heuristics */
2804  for( i = 0; i < (*set)->nheurs; ++i )
2805  {
2806  SCIP_CALL( SCIPheurFree(&(*set)->heurs[i], *set, blkmem) );
2807  }
2808  BMSfreeMemoryArrayNull(&(*set)->heurs);
2809 
2810  /* free tree compressions */
2811  for( i = 0; i < (*set)->ncomprs; ++i )
2812  {
2813  SCIP_CALL( SCIPcomprFree(&(*set)->comprs[i], *set) );
2814  }
2815  BMSfreeMemoryArrayNull(&(*set)->comprs);
2816 
2817  /* free event handlers */
2818  for( i = 0; i < (*set)->neventhdlrs; ++i )
2819  {
2820  SCIP_CALL( SCIPeventhdlrFree(&(*set)->eventhdlrs[i], *set) );
2821  }
2822  BMSfreeMemoryArrayNull(&(*set)->eventhdlrs);
2823 
2824  /* free node selectors */
2825  for( i = 0; i < (*set)->nnodesels; ++i )
2826  {
2827  SCIP_CALL( SCIPnodeselFree(&(*set)->nodesels[i], *set) );
2828  }
2829  BMSfreeMemoryArrayNull(&(*set)->nodesels);
2830 
2831  /* free branching methods */
2832  for( i = 0; i < (*set)->nbranchrules; ++i )
2833  {
2834  SCIP_CALL( SCIPbranchruleFree(&(*set)->branchrules[i], *set) );
2835  }
2836  BMSfreeMemoryArrayNull(&(*set)->branchrules);
2837 
2838  /* free statistics tables */
2839  for( i = 0; i < (*set)->ntables; ++i )
2840  {
2841  SCIP_CALL( SCIPtableFree(&(*set)->tables[i], *set) );
2842  }
2843  BMSfreeMemoryArrayNull(&(*set)->tables);
2844 
2845  /* free display columns */
2846  for( i = 0; i < (*set)->ndisps; ++i )
2847  {
2848  SCIP_CALL( SCIPdispFree(&(*set)->disps[i], *set) );
2849  }
2850  BMSfreeMemoryArrayNull(&(*set)->disps);
2851 
2852  /* free dialogs */
2853  BMSfreeMemoryArrayNull(&(*set)->dialogs);
2854 
2855  /* free expression handlers */
2856  for( i = 0; i < (*set)->nexprhdlrs; ++i )
2857  {
2858  SCIP_CALL( SCIPexprhdlrFree(&(*set)->exprhdlrs[i], *set, blkmem) );
2859  }
2860  BMSfreeMemoryArrayNull(&(*set)->exprhdlrs);
2861  (*set)->exprhdlrvar = NULL;
2862  (*set)->exprhdlrval = NULL;
2863  (*set)->exprhdlrsum = NULL;
2864  (*set)->exprhdlrproduct = NULL;
2865  (*set)->exprhdlrpow = NULL;
2866 
2867  /* free NLPIs */
2868  for( i = 0; i < (*set)->nnlpis; ++i )
2869  {
2870  SCIP_CALL( SCIPnlpiFree(&(*set)->nlpis[i], *set) );
2871  }
2872  BMSfreeMemoryArrayNull(&(*set)->nlpis);
2873 
2874  /* free concsolvers */
2876 
2877  /* free concsolvers types */
2878  for( i = 0; i < (*set)->nconcsolvertypes; ++i )
2879  {
2880  SCIPconcsolverTypeFree(&(*set)->concsolvertypes[i]);
2881  }
2882  BMSfreeMemoryArrayNull(&(*set)->concsolvertypes);
2883 
2884  /* free information on external codes */
2885  for( i = 0; i < (*set)->nextcodes; ++i )
2886  {
2887  BMSfreeMemoryArrayNull(&(*set)->extcodenames[i]);
2888  BMSfreeMemoryArrayNull(&(*set)->extcodedescs[i]);
2889  }
2890  BMSfreeMemoryArrayNull(&(*set)->extcodenames);
2891  BMSfreeMemoryArrayNull(&(*set)->extcodedescs);
2892 
2893  /* free virtual tables of bandit algorithms */
2894  for( i = 0; i < (*set)->nbanditvtables; ++i )
2895  {
2896  SCIPbanditvtableFree(&(*set)->banditvtables[i]);
2897  }
2898  BMSfreeMemoryArrayNull(&(*set)->banditvtables);
2899 
2900  /* free debugging data structure */
2901  SCIP_CALL( SCIPdebugFree(*set) );
2902 
2903  BMSfreeMemory(set);
2904 
2905  return SCIP_OKAY;
2906 }
2907 
2908 /** returns current stage of SCIP */
2910  SCIP_SET* set /**< global SCIP settings */
2911  )
2912 {
2913  assert(set != NULL);
2914 
2915  return set->stage;
2916 }
2917 
2918 /** creates a SCIP_Bool parameter, sets it to its default value, and adds it to the parameter set */
2920  SCIP_SET* set, /**< global SCIP settings */
2921  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
2922  BMS_BLKMEM* blkmem, /**< block memory */
2923  const char* name, /**< name of the parameter */
2924  const char* desc, /**< description of the parameter */
2925  SCIP_Bool* valueptr, /**< pointer to store the current parameter value, or NULL */
2926  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
2927  SCIP_Bool defaultvalue, /**< default value of the parameter */
2928  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
2929  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
2930  )
2931 {
2932  assert(set != NULL);
2933 
2934  SCIP_CALL( SCIPparamsetAddBool(set->paramset, messagehdlr, blkmem, name, desc, valueptr, isadvanced,
2935  defaultvalue, paramchgd, paramdata) );
2936 
2937  return SCIP_OKAY;
2938 }
2939 
2940 /** creates an int parameter, sets it to its default value, and adds it to the parameter set */
2942  SCIP_SET* set, /**< global SCIP settings */
2943  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
2944  BMS_BLKMEM* blkmem, /**< block memory */
2945  const char* name, /**< name of the parameter */
2946  const char* desc, /**< description of the parameter */
2947  int* valueptr, /**< pointer to store the current parameter value, or NULL */
2948  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
2949  int defaultvalue, /**< default value of the parameter */
2950  int minvalue, /**< minimum value for parameter */
2951  int maxvalue, /**< maximum value for parameter */
2952  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
2953  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
2954  )
2955 {
2956  assert(set != NULL);
2957 
2958  SCIP_CALL( SCIPparamsetAddInt(set->paramset, messagehdlr, blkmem, name, desc, valueptr, isadvanced,
2959  defaultvalue, minvalue, maxvalue, paramchgd, paramdata) );
2960 
2961  return SCIP_OKAY;
2962 }
2963 
2964 /** creates a SCIP_Longint parameter, sets it to its default value, and adds it to the parameter set */
2966  SCIP_SET* set, /**< global SCIP settings */
2967  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
2968  BMS_BLKMEM* blkmem, /**< block memory */
2969  const char* name, /**< name of the parameter */
2970  const char* desc, /**< description of the parameter */
2971  SCIP_Longint* valueptr, /**< pointer to store the current parameter value, or NULL */
2972  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
2973  SCIP_Longint defaultvalue, /**< default value of the parameter */
2974  SCIP_Longint minvalue, /**< minimum value for parameter */
2975  SCIP_Longint maxvalue, /**< maximum value for parameter */
2976  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
2977  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
2978  )
2979 {
2980  assert(set != NULL);
2981 
2982  SCIP_CALL( SCIPparamsetAddLongint(set->paramset, messagehdlr, blkmem, name, desc, valueptr, isadvanced,
2983  defaultvalue, minvalue, maxvalue, paramchgd, paramdata) );
2984 
2985  return SCIP_OKAY;
2986 }
2987 
2988 /** creates a SCIP_Real parameter, sets it to its default value, and adds it to the parameter set */
2990  SCIP_SET* set, /**< global SCIP settings */
2991  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
2992  BMS_BLKMEM* blkmem, /**< block memory */
2993  const char* name, /**< name of the parameter */
2994  const char* desc, /**< description of the parameter */
2995  SCIP_Real* valueptr, /**< pointer to store the current parameter value, or NULL */
2996  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
2997  SCIP_Real defaultvalue, /**< default value of the parameter */
2998  SCIP_Real minvalue, /**< minimum value for parameter */
2999  SCIP_Real maxvalue, /**< maximum value for parameter */
3000  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
3001  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
3002  )
3003 {
3004  assert(set != NULL);
3005 
3006  SCIP_CALL( SCIPparamsetAddReal(set->paramset, messagehdlr, blkmem, name, desc, valueptr, isadvanced,
3007  defaultvalue, minvalue, maxvalue, paramchgd, paramdata) );
3008 
3009  return SCIP_OKAY;
3010 }
3011 
3012 /** creates a char parameter, sets it to its default value, and adds it to the parameter set */
3014  SCIP_SET* set, /**< global SCIP settings */
3015  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3016  BMS_BLKMEM* blkmem, /**< block memory */
3017  const char* name, /**< name of the parameter */
3018  const char* desc, /**< description of the parameter */
3019  char* valueptr, /**< pointer to store the current parameter value, or NULL */
3020  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
3021  char defaultvalue, /**< default value of the parameter */
3022  const char* allowedvalues, /**< array with possible parameter values, or NULL if not restricted */
3023  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
3024  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
3025  )
3026 {
3027  assert(set != NULL);
3028 
3029  SCIP_CALL( SCIPparamsetAddChar(set->paramset, messagehdlr, blkmem, name, desc, valueptr, isadvanced,
3030  defaultvalue, allowedvalues, paramchgd, paramdata) );
3031 
3032  return SCIP_OKAY;
3033 }
3034 
3035 /** creates a string parameter, sets it to its default value, and adds it to the parameter set */
3037  SCIP_SET* set, /**< global SCIP settings */
3038  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3039  BMS_BLKMEM* blkmem, /**< block memory */
3040  const char* name, /**< name of the parameter */
3041  const char* desc, /**< description of the parameter */
3042  char** valueptr, /**< pointer to store the current parameter value, or NULL */
3043  SCIP_Bool isadvanced, /**< is this parameter an advanced parameter? */
3044  const char* defaultvalue, /**< default value of the parameter */
3045  SCIP_DECL_PARAMCHGD ((*paramchgd)), /**< change information method of parameter */
3046  SCIP_PARAMDATA* paramdata /**< locally defined parameter specific data */
3047  )
3048 {
3049  assert(set != NULL);
3050 
3051  SCIP_CALL( SCIPparamsetAddString(set->paramset, messagehdlr, blkmem, name, desc, valueptr, isadvanced,
3052  defaultvalue, paramchgd, paramdata) );
3053 
3054  return SCIP_OKAY;
3055 }
3056 
3057 /** gets the fixing status value of an existing parameter */
3059  SCIP_SET* set, /**< global SCIP settings */
3060  const char* name /**< name of the parameter */
3061  )
3062 {
3063  assert(set != NULL);
3064 
3065  return SCIPparamsetIsFixed(set->paramset, name);
3066 }
3067 
3068 /** returns the pointer to the SCIP parameter with the given name */
3070  SCIP_SET* set, /**< global SCIP settings */
3071  const char* name /**< name of the parameter */
3072  )
3073 {
3074  assert(set != NULL);
3075 
3076  return SCIPparamsetGetParam(set->paramset, name);
3077 }
3078 
3079 /** gets the value of an existing SCIP_Bool parameter */
3081  SCIP_SET* set, /**< global SCIP settings */
3082  const char* name, /**< name of the parameter */
3083  SCIP_Bool* value /**< pointer to store the parameter */
3084  )
3085 {
3086  assert(set != NULL);
3087 
3088  SCIP_CALL( SCIPparamsetGetBool(set->paramset, name, value) );
3089 
3090  return SCIP_OKAY;
3091 }
3093 /** gets the value of an existing Int parameter */
3095  SCIP_SET* set, /**< global SCIP settings */
3096  const char* name, /**< name of the parameter */
3097  int* value /**< pointer to store the value of the parameter */
3098  )
3099 {
3100  assert(set != NULL);
3101 
3102  SCIP_CALL( SCIPparamsetGetInt(set->paramset, name, value) );
3103 
3104  return SCIP_OKAY;
3105 }
3106 
3107 /** gets the value of an existing SCIP_Longint parameter */
3109  SCIP_SET* set, /**< global SCIP settings */
3110  const char* name, /**< name of the parameter */
3111  SCIP_Longint* value /**< pointer to store the value of the parameter */
3112  )
3113 {
3114  assert(set != NULL);
3116  SCIP_CALL( SCIPparamsetGetLongint(set->paramset, name, value) );
3117 
3118  return SCIP_OKAY;
3119 }
3120 
3121 /** gets the value of an existing SCIP_Real parameter */
3123  SCIP_SET* set, /**< global SCIP settings */
3124  const char* name, /**< name of the parameter */
3125  SCIP_Real* value /**< pointer to store the value of the parameter */
3126  )
3127 {
3128  assert(set != NULL);
3129 
3130  SCIP_CALL( SCIPparamsetGetReal(set->paramset, name, value) );
3131 
3132  return SCIP_OKAY;
3133 }
3134 
3135 /** gets the value of an existing Char parameter */
3137  SCIP_SET* set, /**< global SCIP settings */
3138  const char* name, /**< name of the parameter */
3139  char* value /**< pointer to store the value of the parameter */
3140  )
3141 {
3142  assert(set != NULL);
3143 
3144  SCIP_CALL( SCIPparamsetGetChar(set->paramset, name, value) );
3145 
3146  return SCIP_OKAY;
3147 }
3149 /** gets the value of an existing String parameter */
3151  SCIP_SET* set, /**< global SCIP settings */
3152  const char* name, /**< name of the parameter */
3153  char** value /**< pointer to store the value of the parameter */
3154  )
3155 {
3156  assert(set != NULL);
3157 
3158  SCIP_CALL( SCIPparamsetGetString(set->paramset, name, value) );
3160  return SCIP_OKAY;
3161 }
3162 
3163 /** changes the fixing status of an existing parameter */
3165  SCIP_SET* set, /**< global SCIP settings */
3166  const char* name, /**< name of the parameter */
3167  SCIP_Bool fixed /**< new fixing status of the parameter */
3168  )
3169 {
3170  assert(set != NULL);
3171 
3172  SCIP_CALL( SCIPparamsetFix(set->paramset, name, fixed) );
3174  return SCIP_OKAY;
3175 }
3176 
3177 /** changes the value of an existing SCIP_Bool parameter */
3179  SCIP_SET* set, /**< global SCIP settings */
3180  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3181  SCIP_PARAM* param, /**< parameter */
3182  SCIP_Bool value /**< new value of the parameter */
3183  )
3184 {
3185  SCIP_RETCODE retcode;
3186 
3187  assert(set != NULL);
3188 
3189  retcode = SCIPparamSetBool(param, set, messagehdlr, value, FALSE, TRUE);
3190 
3191  if( retcode != SCIP_PARAMETERWRONGVAL )
3192  {
3193  SCIP_CALL( retcode );
3194  }
3195 
3196  return retcode;
3197 }
3198 
3199 /** changes the value of an existing SCIP_Bool parameter */
3201  SCIP_SET* set, /**< global SCIP settings */
3202  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3203  const char* name, /**< name of the parameter */
3204  SCIP_Bool value /**< new value of the parameter */
3205  )
3206 {
3207  assert(set != NULL);
3208 
3209  SCIP_CALL( SCIPparamsetSetBool(set->paramset, set, messagehdlr, name, value) );
3210 
3211  return SCIP_OKAY;
3212 }
3213 
3214 /** sets the default value of an existing SCIP_Bool parameter */
3216  SCIP_SET* set, /**< global SCIP settings */
3217  const char* name, /**< name of the parameter */
3218  SCIP_Bool defaultvalue /**< new default value of the parameter */
3219  )
3220 {
3221  assert(set != NULL);
3222 
3223  SCIP_CALL( SCIPparamsetSetDefaultBool(set->paramset, name, defaultvalue) );
3224 
3225  return SCIP_OKAY;
3226 }
3227 
3228 
3229 /** changes the value of an existing Int parameter */
3231  SCIP_SET* set, /**< global SCIP settings */
3232  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3233  SCIP_PARAM* param, /**< parameter */
3234  int value /**< new value of the parameter */
3235  )
3236 {
3237  SCIP_RETCODE retcode;
3238 
3239  assert(set != NULL);
3240  assert(param != NULL);
3241 
3242  retcode = SCIPparamSetInt(param, set, messagehdlr, value, FALSE, TRUE);
3244  if( retcode != SCIP_PARAMETERWRONGVAL )
3245  {
3246  SCIP_CALL( retcode );
3247  }
3248 
3249  return retcode;
3250 }
3251 
3252 /** changes the value of an existing Int parameter */
3254  SCIP_SET* set, /**< global SCIP settings */
3255  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3256  const char* name, /**< name of the parameter */
3257  int value /**< new value of the parameter */
3258  )
3259 {
3260  assert(set != NULL);
3261 
3262  SCIP_CALL( SCIPparamsetSetInt(set->paramset, set, messagehdlr, name, value) );
3263 
3264  return SCIP_OKAY;
3265 }
3266 
3267 /** changes the default value of an existing Int parameter */
3269  SCIP_SET* set, /**< global SCIP settings */
3270  const char* name, /**< name of the parameter */
3271  int defaultvalue /**< new default value of the parameter */
3272  )
3273 {
3274  assert(set != NULL);
3275 
3276  SCIP_CALL( SCIPparamsetSetDefaultInt(set->paramset, name, defaultvalue) );
3277 
3278  return SCIP_OKAY;
3280 
3281 /** changes the value of an existing SCIP_Longint parameter */
3283  SCIP_SET* set, /**< global SCIP settings */
3284  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3285  SCIP_PARAM* param, /**< parameter */
3286  SCIP_Longint value /**< new value of the parameter */
3287  )
3288 {
3289  SCIP_RETCODE retcode;
3290 
3291  assert(set != NULL);
3292  assert(param != NULL);
3293 
3294  retcode = SCIPparamSetLongint(param, set, messagehdlr, value, FALSE, TRUE);
3295 
3296  if( retcode != SCIP_PARAMETERWRONGVAL )
3297  {
3298  SCIP_CALL( retcode );
3299  }
3300 
3301  return retcode;
3302 }
3303 
3304 /** changes the value of an existing SCIP_Longint parameter */
3306  SCIP_SET* set, /**< global SCIP settings */
3307  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3308  const char* name, /**< name of the parameter */
3309  SCIP_Longint value /**< new value of the parameter */
3310  )
3311 {
3312  assert(set != NULL);
3313 
3314  SCIP_CALL( SCIPparamsetSetLongint(set->paramset, set, messagehdlr, name, value) );
3315 
3316  return SCIP_OKAY;
3317 }
3318 
3319 /** changes the value of an existing SCIP_Real parameter */
3321  SCIP_SET* set, /**< global SCIP settings */
3322  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3323  SCIP_PARAM* param, /**< parameter */
3324  SCIP_Real value /**< new value of the parameter */
3325  )
3326 {
3327  SCIP_RETCODE retcode;
3328 
3329  assert(set != NULL);
3330  assert(param != NULL);
3331 
3332  retcode = SCIPparamSetReal(param, set, messagehdlr, value, FALSE, TRUE);
3333 
3334  if( retcode != SCIP_PARAMETERWRONGVAL )
3335  {
3336  SCIP_CALL( retcode );
3337  }
3338 
3339  return retcode;
3340 }
3341 
3342 /** changes the value of an existing SCIP_Real parameter */
3344  SCIP_SET* set, /**< global SCIP settings */
3345  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3346  const char* name, /**< name of the parameter */
3347  SCIP_Real value /**< new value of the parameter */
3348  )
3349 {
3350  assert(set != NULL);
3351 
3352  SCIP_CALL( SCIPparamsetSetReal(set->paramset, set, messagehdlr, name, value) );
3353 
3354  return SCIP_OKAY;
3355 }
3356 
3357 /** changes the value of an existing Char parameter */
3359  SCIP_SET* set, /**< global SCIP settings */
3360  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3361  SCIP_PARAM* param, /**< parameter */
3362  char value /**< new value of the parameter */
3363  )
3364 {
3365  SCIP_RETCODE retcode;
3366 
3367  assert(set != NULL);
3368  assert(param != NULL);
3369 
3370  retcode = SCIPparamSetChar(param, set, messagehdlr, value, FALSE, TRUE);
3371 
3372  if( retcode != SCIP_PARAMETERWRONGVAL )
3373  {
3374  SCIP_CALL( retcode );
3375  }
3376 
3377  return retcode;
3378 }
3379 
3380 /** changes the value of an existing Char parameter */
3382  SCIP_SET* set, /**< global SCIP settings */
3383  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3384  const char* name, /**< name of the parameter */
3385  char value /**< new value of the parameter */
3386  )
3387 {
3388  assert(set != NULL);
3389 
3390  SCIP_CALL( SCIPparamsetSetChar(set->paramset, set, messagehdlr, name, value) );
3391 
3392  return SCIP_OKAY;
3393 }
3394 
3395 /** changes the value of an existing String parameter */
3397  SCIP_SET* set, /**< global SCIP settings */
3398  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3399  SCIP_PARAM* param, /**< parameter */
3400  const char* value /**< new value of the parameter */
3401  )
3402 {
3403  SCIP_RETCODE retcode;
3404 
3405  assert(set != NULL);
3406  assert(param != NULL);
3407 
3408  retcode = SCIPparamSetString(param, set, messagehdlr, value, TRUE);
3409 
3410  if( retcode != SCIP_PARAMETERWRONGVAL )
3411  {
3412  SCIP_CALL( retcode );
3413  }
3414 
3415  return retcode;
3416 }
3417 
3418 /** changes the value of an existing String parameter */
3420  SCIP_SET* set, /**< global SCIP settings */
3421  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3422  const char* name, /**< name of the parameter */
3423  const char* value /**< new value of the parameter */
3424  )
3425 {
3426  assert(set != NULL);
3427 
3428  SCIP_CALL( SCIPparamsetSetString(set->paramset, set, messagehdlr, name, value) );
3429 
3430  return SCIP_OKAY;
3431 }
3432 
3433 /** reads parameters from a file */
3435  SCIP_SET* set, /**< global SCIP settings */
3436  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3437  const char* filename /**< file name */
3438  )
3439 {
3440  assert(set != NULL);
3441 
3442  SCIP_CALL( SCIPparamsetRead(set->paramset, set, messagehdlr, filename) );
3443 
3444  return SCIP_OKAY;
3445 }
3446 
3447 /** writes all parameters in the parameter set to a file */
3449  SCIP_SET* set, /**< global SCIP settings */
3450  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3451  const char* filename, /**< file name, or NULL for stdout */
3452  SCIP_Bool comments, /**< should parameter descriptions be written as comments? */
3453  SCIP_Bool onlychanged /**< should only the parameters been written, that are changed from default? */
3454  )
3455 {
3456  assert(set != NULL);
3457 
3458  SCIP_CALL( SCIPparamsetWrite(set->paramset, messagehdlr, filename, comments, onlychanged) );
3459 
3460  return SCIP_OKAY;
3461 }
3462 
3463 /** resets a single parameters to its default value */
3465  SCIP_SET* set, /**< global SCIP settings */
3466  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3467  const char* name /**< name of the parameter */
3468  )
3469 {
3470  SCIP_CALL( SCIPparamsetSetToDefault(set->paramset, set, messagehdlr, name) );
3471 
3472  return SCIP_OKAY;
3473 }
3474 
3475 /** resets all parameters to their default values */
3477  SCIP_SET* set, /**< global SCIP settings */
3478  SCIP_MESSAGEHDLR* messagehdlr /**< message handler */
3479  )
3480 {
3481  SCIP_CALL( SCIPparamsetSetToDefaults(set->paramset, set, messagehdlr) );
3482 
3483  return SCIP_OKAY;
3484 }
3485 
3486 /** sets parameters to
3487  *
3488  * - \ref SCIP_PARAMEMPHASIS_DEFAULT to use default values (see also SCIPsetResetParams())
3489  * - \ref SCIP_PARAMEMPHASIS_COUNTER to get feasible and "fast" counting process
3490  * - \ref SCIP_PARAMEMPHASIS_CPSOLVER to get CP like search (e.g. no LP relaxation)
3491  * - \ref SCIP_PARAMEMPHASIS_EASYCIP to solve easy problems fast
3492  * - \ref SCIP_PARAMEMPHASIS_FEASIBILITY to detect feasibility fast
3493  * - \ref SCIP_PARAMEMPHASIS_HARDLP to be capable to handle hard LPs
3494  * - \ref SCIP_PARAMEMPHASIS_OPTIMALITY to prove optimality fast
3495  * - \ref SCIP_PARAMEMPHASIS_PHASEFEAS to find feasible solutions during a 3 phase solution process
3496  * - \ref SCIP_PARAMEMPHASIS_PHASEIMPROVE to find improved solutions during a 3 phase solution process
3497  * - \ref SCIP_PARAMEMPHASIS_PHASEPROOF to proof optimality during a 3 phase solution process
3498  */
3500  SCIP_SET* set, /**< global SCIP settings */
3501  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3502  SCIP_PARAMEMPHASIS paramemphasis, /**< parameter settings */
3503  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
3504  )
3505 {
3506  SCIP_CALL( SCIPparamsetSetEmphasis(set->paramset, set, messagehdlr, paramemphasis, quiet) );
3507 
3508  return SCIP_OKAY;
3509 }
3510 
3511 /** sets parameters to deactivate separators and heuristics that use auxiliary SCIP instances; should be called for
3512  * auxiliary SCIP instances to avoid recursion
3513  */
3515  SCIP_SET* set, /**< global SCIP settings */
3516  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3517  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
3518  )
3519 {
3520  SCIP_CALL( SCIPparamsetSetToSubscipsOff(set->paramset, set, messagehdlr, quiet) );
3521 
3522  return SCIP_OKAY;
3523 }
3524 
3525 /** sets heuristic parameters values to
3526  * - SCIP_PARAMSETTING_DEFAULT which are the default values of all heuristic parameters
3527  * - SCIP_PARAMSETTING_FAST such that the time spent on heuristics is decreased
3528  * - SCIP_PARAMSETTING_AGGRESSIVE such that the heuristics are called more aggressively
3529  * - SCIP_PARAMSETTING_OFF which turn off all heuristics
3530  */
3532  SCIP_SET* set, /**< global SCIP settings */
3533  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3534  SCIP_PARAMSETTING paramsetting, /**< parameter settings */
3535  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
3536  )
3537 {
3538  SCIP_CALL( SCIPparamsetSetHeuristics(set->paramset, set, messagehdlr, paramsetting, quiet) );
3539 
3540  return SCIP_OKAY;
3541 }
3542 
3543 /** sets presolving parameters to
3544  * - SCIP_PARAMSETTING_DEFAULT which are the default values of all presolving parameters
3545  * - SCIP_PARAMSETTING_FAST such that the time spent on presolving is decreased
3546  * - SCIP_PARAMSETTING_AGGRESSIVE such that the presolving is more aggressive
3547  * - SCIP_PARAMSETTING_OFF which turn off all presolving
3548  */
3550  SCIP_SET* set, /**< global SCIP settings */
3551  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3552  SCIP_PARAMSETTING paramsetting, /**< parameter settings */
3553  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
3554  )
3556  SCIP_CALL( SCIPparamsetSetPresolving(set->paramset, set, messagehdlr, paramsetting, quiet) );
3557 
3558  return SCIP_OKAY;
3559 }
3560 
3561 /** sets separating parameters to
3562  * - SCIP_PARAMSETTING_DEFAULT which are the default values of all separating parameters
3563  * - SCIP_PARAMSETTING_FAST such that the time spent on separating is decreased
3564  * - SCIP_PARAMSETTING_AGGRESSIVE such that separating is more aggressive
3565  * - SCIP_PARAMSETTING_OFF which turn off all separating
3566  */
3568  SCIP_SET* set, /**< global SCIP settings */
3569  SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
3570  SCIP_PARAMSETTING paramsetting, /**< parameter settings */
3571  SCIP_Bool quiet /**< should the parameter be set quiet (no output) */
3572  )
3573 {
3574  SCIP_CALL( SCIPparamsetSetSeparating(set->paramset, set, messagehdlr, paramsetting, quiet) );
3575 
3576  return SCIP_OKAY;
3577 }
3579 /** returns the array of all available SCIP parameters */
3581  SCIP_SET* set /**< global SCIP settings */
3582  )
3583 {
3584  assert(set != NULL);
3585 
3586  return SCIPparamsetGetParams(set->paramset);
3587 }
3588 
3589 /** returns the total number of all available SCIP parameters */
3590 int SCIPsetGetNParams(
3591  SCIP_SET* set /**< global SCIP settings */
3592  )
3594  assert(set != NULL);
3595 
3596  return SCIPparamsetGetNParams(set->paramset);
3597 }
3598 
3599 /** inserts file reader in file reader list */
3601  SCIP_SET* set, /**< global SCIP settings */
3602  SCIP_READER* reader /**< file reader */
3603  )
3604 {
3605  assert(set != NULL);
3606  assert(reader != NULL);
3607 
3608  if( set->nreaders >= set->readerssize )
3609  {
3610  set->readerssize = SCIPsetCalcMemGrowSize(set, set->nreaders+1);
3611  SCIP_ALLOC( BMSreallocMemoryArray(&set->readers, set->readerssize) );
3612  }
3613  assert(set->nreaders < set->readerssize);
3614 
3615  set->readers[set->nreaders] = reader;
3616  set->nreaders++;
3617 
3618  return SCIP_OKAY;
3619 }
3620 
3621 /** returns the file reader of the given name, or NULL if not existing */
3623  SCIP_SET* set, /**< global SCIP settings */
3624  const char* name /**< name of file reader */
3625  )
3626 {
3627  int i;
3629  assert(set != NULL);
3630  assert(name != NULL);
3631 
3632  for( i = 0; i < set->nreaders; ++i )
3633  {
3634  if( strcmp(SCIPreaderGetName(set->readers[i]), name) == 0 )
3635  return set->readers[i];
3636  }
3637 
3638  return NULL;
3639 }
3640 
3641 /** inserts variable pricer in variable pricer list */
3643  SCIP_SET* set, /**< global SCIP settings */
3644  SCIP_PRICER* pricer /**< variable pricer */
3645  )
3647  assert(set != NULL);
3648  assert(pricer != NULL);
3649 
3650  if( set->npricers >= set->pricerssize )
3651  {
3652  set->pricerssize = SCIPsetCalcMemGrowSize(set, set->npricers+1);
3653  SCIP_ALLOC( BMSreallocMemoryArray(&set->pricers, set->pricerssize) );
3654  }
3655  assert(set->npricers < set->pricerssize);
3656 
3657  set->pricers[set->npricers] = pricer;
3658  set->npricers++;
3659  set->pricerssorted = FALSE;
3660 
3661  return SCIP_OKAY;
3662 }
3663 
3664 /** returns the variable pricer of the given name, or NULL if not existing */
3666  SCIP_SET* set, /**< global SCIP settings */
3667  const char* name /**< name of variable pricer */
3668  )
3670  int i;
3671 
3672  assert(set != NULL);
3673  assert(name != NULL);
3674 
3675  for( i = 0; i < set->npricers; ++i )
3676  {
3677  if( strcmp(SCIPpricerGetName(set->pricers[i]), name) == 0 )
3678  return set->pricers[i];
3679  }
3680 
3681  return NULL;
3682 }
3683 
3684 /** sorts pricers by priorities */
3685 void SCIPsetSortPricers(
3686  SCIP_SET* set /**< global SCIP settings */
3687  )
3688 {
3689  assert(set != NULL);
3690 
3691  if( !set->pricerssorted )
3692  {
3693  SCIPsortPtr((void**)set->pricers, SCIPpricerComp, set->npricers);
3694  set->pricerssorted = TRUE;
3695  set->pricersnamesorted = FALSE;
3696  }
3697 }
3698 
3699 /** sorts pricers by name */
3701  SCIP_SET* set /**< global SCIP settings */
3702  )
3703 {
3704  assert(set != NULL);
3705 
3706  if( !set->pricersnamesorted )
3707  {
3708  SCIPsortPtr((void**)set->pricers, SCIPpricerCompName, set->npricers);
3709  set->pricerssorted = FALSE;
3710  set->pricersnamesorted = TRUE;
3711  }
3712 }
3713 
3714 /** inserts Benders' decomposition in the Benders' decomposition list */
3716  SCIP_SET* set, /**< global SCIP settings */
3717  SCIP_BENDERS* benders /**< Benders' decomposition structure */
3718  )
3719 {
3720  assert(set != NULL);
3721  assert(benders != NULL);
3722 
3723  if( set->nbenders >= set->benderssize )
3724  {
3725  set->benderssize = SCIPsetCalcMemGrowSize(set, set->nbenders+1);
3726  SCIP_ALLOC( BMSreallocMemoryArray(&set->benders, set->benderssize) );
3727  }
3728  assert(set->nbenders < set->benderssize);
3729 
3730  set->benders[set->nbenders] = benders;
3731  set->nbenders++;
3732  set->benderssorted = FALSE;
3733 
3734  return SCIP_OKAY;
3735 }
3736 
3737 /** returns the Benders' decomposition of the given name, or NULL if not existing */
3739  SCIP_SET* set, /**< global SCIP settings */
3740  const char* name /**< name of the Benders' decomposition */
3741  )
3742 {
3743  int i;
3745  assert(set != NULL);
3746  assert(name != NULL);
3747 
3748  for( i = 0; i < set->nbenders; ++i )
3749  {
3750  if( strcmp(SCIPbendersGetName(set->benders[i]), name) == 0 )
3751  return set->benders[i];
3752  }
3753 
3754  return NULL;
3755 }
3756 
3757 /** sorts Benders' decomposition by priorities */
3758 void SCIPsetSortBenders(
3759  SCIP_SET* set /**< global SCIP settings */
3760  )
3761 {
3762  assert(set != NULL);
3763 
3764  if( !set->benderssorted )
3765  {
3766  SCIPsortPtr((void**)set->benders, SCIPbendersComp, set->nbenders);
3767  set->benderssorted = TRUE;
3768  set->bendersnamesorted = FALSE;
3769  }
3770 }
3771 
3772 /** sorts Benders' decomposition by name */
3774  SCIP_SET* set /**< global SCIP settings */
3775  )
3776 {
3777  assert(set != NULL);
3778 
3779  if( !set->bendersnamesorted )
3780  {
3781  SCIPsortPtr((void**)set->benders, SCIPbendersCompName, set->nbenders);
3782  set->benderssorted = FALSE;
3783  set->bendersnamesorted = TRUE;
3784  }
3785 }
3786 
3787 /** inserts constraint handler in constraint handler list */
3789  SCIP_SET* set, /**< global SCIP settings */
3790  SCIP_CONSHDLR* conshdlr /**< constraint handler */
3791  )
3792 {
3793  int priority;
3794  int i;
3795 
3796  assert(set != NULL);
3797  assert(conshdlr != NULL);
3798  assert(!SCIPconshdlrIsInitialized(conshdlr));
3799 
3800  /* allocate memory */
3801  if( set->nconshdlrs >= set->conshdlrssize )
3802  {
3803  set->conshdlrssize = SCIPsetCalcMemGrowSize(set, set->nconshdlrs+1);
3804  SCIP_ALLOC( BMSreallocMemoryArray(&set->conshdlrs, set->conshdlrssize) );
3805  SCIP_ALLOC( BMSreallocMemoryArray(&set->conshdlrs_sepa, set->conshdlrssize) );
3806  SCIP_ALLOC( BMSreallocMemoryArray(&set->conshdlrs_enfo, set->conshdlrssize) );
3807  SCIP_ALLOC( BMSreallocMemoryArray(&set->conshdlrs_include, set->conshdlrssize) );
3808  }
3809  assert(set->nconshdlrs < set->conshdlrssize);
3810 
3811  /* sort constraint handler into conshdlrs array sorted by check priority */
3812  priority = SCIPconshdlrGetCheckPriority(conshdlr);
3813  for( i = set->nconshdlrs; i > 0 && SCIPconshdlrGetCheckPriority(set->conshdlrs[i-1]) < priority; --i )
3814  {
3815  set->conshdlrs[i] = set->conshdlrs[i-1];
3816  }
3817  set->conshdlrs[i] = conshdlr;
3818 
3819  /* sort constraint handler into conshdlrs_sepa array sorted by sepa priority */
3820  priority = SCIPconshdlrGetSepaPriority(conshdlr);
3821  for( i = set->nconshdlrs; i > 0 && SCIPconshdlrGetSepaPriority(set->conshdlrs_sepa[i-1]) < priority; --i )
3822  {
3823  set->conshdlrs_sepa[i] = set->conshdlrs_sepa[i-1];
3824  }
3825  set->conshdlrs_sepa[i] = conshdlr;
3826 
3827  /* sort constraint handler into conshdlrs_enfo array sorted by enfo priority */
3828  priority = SCIPconshdlrGetEnfoPriority(conshdlr);
3829  for( i = set->nconshdlrs; i > 0 && SCIPconshdlrGetEnfoPriority(set->conshdlrs_enfo[i-1]) < priority; --i )
3830  {
3831  set->conshdlrs_enfo[i] = set->conshdlrs_enfo[i-1];
3832  }
3833  set->conshdlrs_enfo[i] = conshdlr;
3834 
3835  /* add constraint handler into conshdlrs_include array sorted by inclusion order */
3836  set->conshdlrs_include[set->nconshdlrs] = conshdlr;
3838  set->nconshdlrs++;
3839 
3840  return SCIP_OKAY;
3841 }
3842 
3843 /** reinserts a constraint handler with modified sepa priority into the sepa priority sorted array */
3845  SCIP_SET* set, /**< global SCIP settings */
3846  SCIP_CONSHDLR* conshdlr, /**< constraint handler to be reinserted */
3847  int oldpriority /**< the old separation priority of constraint handler */
3848  )
3849 {
3850  int newpriority;
3851  int newpos;
3852  int i;
3853  assert(set != NULL);
3854  assert(conshdlr != NULL);
3855 
3856  newpriority = SCIPconshdlrGetSepaPriority(conshdlr);
3857  newpos = -1;
3858 
3859  /* search for the old position of constraint handler; determine its new position at the same time */
3860  if( newpriority > oldpriority )
3861  {
3862  i = 0;
3863  while( i < set->nconshdlrs &&
3864  strcmp(SCIPconshdlrGetName(set->conshdlrs_sepa[i]), SCIPconshdlrGetName(conshdlr)) != 0 )
3865  {
3866  int priorityatpos;
3868  priorityatpos = SCIPconshdlrGetSepaPriority(set->conshdlrs_sepa[i]);
3869  assert(priorityatpos >= oldpriority);
3870 
3871  /* current index is the position to insert the constraint handler */
3872  if( newpriority > priorityatpos && newpos == -1 )
3873  newpos = i;
3874 
3875  ++i;
3876  }
3877  assert(i < set->nconshdlrs);
3878 
3879  /* constraint must change its position in array */
3880  if( newpos != -1 )
3881  {
3882  /* shift all constraint handlers between old and new position by one, and insert constraint handler */
3883  for( ; i > newpos; --i )
3884  {
3885  set->conshdlrs_sepa[i] = set->conshdlrs_sepa[i-1];
3886  }
3887  set->conshdlrs_sepa[newpos] = conshdlr;
3888  }
3889  }
3890  else if( newpriority < oldpriority )
3891  {
3892  i = set->nconshdlrs - 1;
3893  while( i >= 0 && strcmp(SCIPconshdlrGetName(set->conshdlrs_sepa[i]), SCIPconshdlrGetName(conshdlr)) != 0 )
3894  {
3895  int priorityatpos;
3896 
3897  priorityatpos = SCIPconshdlrGetSepaPriority(set->conshdlrs_sepa[i]);
3898  assert(priorityatpos <= oldpriority);
3899 
3900  /* current index is the position to insert the constraint handler */
3901  if( newpriority < priorityatpos && newpos == -1 )
3902  newpos = i;
3903 
3904  --i;
3905  }
3906  assert(i >= 0);
3907 
3908  /* constraint must change its position in array */
3909  if( newpos != -1 )
3910  {
3911  /* shift all constraint handlers between old and new position by one, and insert constraint handler */
3912  for(; i < newpos; ++i )
3913  {
3914  set->conshdlrs_sepa[i] = set->conshdlrs_sepa[i + 1];
3915  }
3916  set->conshdlrs_sepa[newpos] = conshdlr;
3917  }
3918 #ifndef NDEBUG
3919  for( i = 0; i < set->nconshdlrs - 1; ++i )
3920  assert(SCIPconshdlrGetSepaPriority(set->conshdlrs_sepa[i])
3921  >= SCIPconshdlrGetSepaPriority(set->conshdlrs_sepa[i + 1]));
3922 #endif
3923  }
3924 }
3925 
3926 /** returns the constraint handler of the given name, or NULL if not existing */
3928  SCIP_SET* set, /**< global SCIP settings */
3929  const char* name /**< name of constraint handler */
3930  )
3931 {
3932  int i;
3933 
3934  assert(set != NULL);
3935  assert(name != NULL);
3936 
3937  for( i = 0; i < set->nconshdlrs; ++i )
3938  {
3939  if( strcmp(SCIPconshdlrGetName(set->conshdlrs[i]), name) == 0 )
3940  return set->conshdlrs[i];
3941  }
3942 
3943  return NULL;
3944 }
3945 
3946 /** inserts conflict handler in conflict handler list */
3948  SCIP_SET* set, /**< global SCIP settings */
3949  SCIP_CONFLICTHDLR* conflicthdlr /**< conflict handler */
3950  )
3951 {
3952  assert(set != NULL);
3953  assert(conflicthdlr != NULL);
3954  assert(!SCIPconflicthdlrIsInitialized(conflicthdlr));
3955 
3956  if( set->nconflicthdlrs >= set->conflicthdlrssize )
3957  {
3958  set->conflicthdlrssize = SCIPsetCalcMemGrowSize(set, set->nconflicthdlrs+1);
3959  SCIP_ALLOC( BMSreallocMemoryArray(&set->conflicthdlrs, set->conflicthdlrssize) );
3960  }
3961  assert(set->nconflicthdlrs < set->conflicthdlrssize);
3962 
3963  set->conflicthdlrs[set->nconflicthdlrs] = conflicthdlr;
3964  set->nconflicthdlrs++;
3965  set->conflicthdlrssorted = FALSE;
3966 
3967  return SCIP_OKAY;
3968 }
3969 
3970 /** returns the conflict handler of the given name, or NULL if not existing */
3972  SCIP_SET* set, /**< global SCIP settings */
3973  const char* name /**< name of conflict handler */
3974  )
3975 {
3976  int i;
3977 
3978  assert(set != NULL);
3979  assert(name != NULL);
3980 
3981  for( i = 0; i < set->nconflicthdlrs; ++i )
3982  {
3983  if( strcmp(SCIPconflicthdlrGetName(set->conflicthdlrs[i]), name) == 0 )
3984  return set->conflicthdlrs[i];
3985  }
3986 
3987  return NULL;
3988 }
3989 
3990 /** sorts conflict handlers by priorities */
3992  SCIP_SET* set /**< global SCIP settings */
3993  )
3994 {
3995  assert(set != NULL);
3996 
3997  if( !set->conflicthdlrssorted )
3998  {
3999  SCIPsortPtr((void**)set->conflicthdlrs, SCIPconflicthdlrComp, set->nconflicthdlrs);
4000  set->conflicthdlrssorted = TRUE;
4001  set->conflicthdlrsnamesorted = FALSE;
4002  }
4003 }
4004 
4005 /** sorts conflict handlers by name */
4007  SCIP_SET* set /**< global SCIP settings */
4008  )
4009 {
4010  assert(set != NULL);
4011 
4012  if( !set->conflicthdlrsnamesorted )
4013  {
4014  SCIPsortPtr((void**)set->conflicthdlrs, SCIPconflicthdlrCompName, set->nconflicthdlrs);
4015  set->conflicthdlrssorted = FALSE;
4016  set->conflicthdlrsnamesorted = TRUE;
4017  }
4018 }
4019 
4020 /** inserts presolver in presolver list */
4022  SCIP_SET* set, /**< global SCIP settings */
4023  SCIP_PRESOL* presol /**< presolver */
4024  )
4025 {
4026  assert(set != NULL);
4027  assert(presol != NULL);
4028 
4029  if( set->npresols >= set->presolssize )
4030  {
4031  set->presolssize = SCIPsetCalcMemGrowSize(set, set->npresols+1);
4032  SCIP_ALLOC( BMSreallocMemoryArray(&set->presols, set->presolssize) );
4033  }
4034  assert(set->npresols < set->presolssize);
4035 
4036  set->presols[set->npresols] = presol;
4037  set->npresols++;
4038  set->presolssorted = FALSE;
4039 
4040  return SCIP_OKAY;
4041 }
4042 
4043 /** returns the presolver of the given name, or NULL if not existing */
4045  SCIP_SET* set, /**< global SCIP settings */
4046  const char* name /**< name of presolver */
4047  )
4048 {
4049  int i;
4051  assert(set != NULL);
4052  assert(name != NULL);
4053 
4054  for( i = 0; i < set->npresols; ++i )
4055  {
4056  if( strcmp(SCIPpresolGetName(set->presols[i]), name) == 0 )
4057  return set->presols[i];
4058  }
4059 
4060  return NULL;
4061 }
4062 
4063 /** sorts presolvers by priorities */
4064 void SCIPsetSortPresols(
4065  SCIP_SET* set /**< global SCIP settings */
4066  )
4067 {
4068  assert(set != NULL);
4069 
4070  if( !set->presolssorted )
4071  {
4072  SCIPsortPtr((void**)set->presols, SCIPpresolComp, set->npresols);
4073  set->presolssorted = TRUE;
4074  set->presolsnamesorted = FALSE;
4075  }
4076 }
4077 
4078 /** sorts presolvers by name */
4080  SCIP_SET* set /**< global SCIP settings */
4081  )
4082 {
4083  assert(set != NULL);
4084 
4085  if( !set->presolsnamesorted )
4086  {
4087  SCIPsortPtr((void**)set->presols, SCIPpresolCompName, set->npresols);
4088  set->presolssorted = FALSE;
4089  set->presolsnamesorted = TRUE;
4090  }
4091 }
4092 
4093 /** inserts relaxator in relaxator list */
4095  SCIP_SET* set, /**< global SCIP settings */
4096  SCIP_RELAX* relax /**< relaxator */
4097  )
4098 {
4099  assert(set != NULL);
4100  assert(relax != NULL);
4101  assert(!SCIPrelaxIsInitialized(relax));
4102 
4103  if( set->nrelaxs >= set->relaxssize )
4104  {
4105  set->relaxssize = SCIPsetCalcMemGrowSize(set, set->nrelaxs+1);
4106  SCIP_ALLOC( BMSreallocMemoryArray(&set->relaxs, set->relaxssize) );
4107  }
4108  assert(set->nrelaxs < set->relaxssize);
4109 
4110  set->relaxs[set->nrelaxs] = relax;
4111  set->nrelaxs++;
4112  set->relaxssorted = FALSE;
4113 
4114  return SCIP_OKAY;
4115 }
4116 
4117 /** returns the relaxator of the given name, or NULL if not existing */
4119  SCIP_SET* set, /**< global SCIP settings */
4120  const char* name /**< name of relaxator */
4121  )
4122 {
4123  int i;
4124 
4125  assert(set != NULL);
4126  assert(name != NULL);
4127 
4128  for( i = 0; i < set->nrelaxs; ++i )
4129  {
4130  if( strcmp(SCIPrelaxGetName(set->relaxs[i]), name) == 0 )
4131  return set->relaxs[i];
4132  }
4133 
4134  return NULL;
4135 }
4136 
4137 /** sorts relaxators by priorities */
4138 void SCIPsetSortRelaxs(
4139  SCIP_SET* set /**< global SCIP settings */
4140  )
4141 {
4142  assert(set != NULL);
4144  if( !set->relaxssorted )
4145  {
4146  SCIPsortPtr((void**)set->relaxs, SCIPrelaxComp, set->nrelaxs);
4147  set->relaxssorted = TRUE;
4148  set->relaxsnamesorted = FALSE;
4149  }
4150 }
4151 
4152 /** sorts relaxators by priorities */
4154  SCIP_SET* set /**< global SCIP settings */
4155  )
4156 {
4157  assert(set != NULL);
4159  if( !set->relaxsnamesorted )
4160  {
4161  SCIPsortPtr((void**)set->relaxs, SCIPrelaxCompName, set->nrelaxs);
4162  set->relaxssorted = FALSE;
4163  set->relaxsnamesorted = TRUE;
4164  }
4165 }
4166 
4167 /** inserts separator in separator list */
4169  SCIP_SET* set, /**< global SCIP settings */
4170  SCIP_SEPA* sepa /**< separator */
4171  )
4172 {
4173  assert(set != NULL);
4174  assert(sepa != NULL);
4175  assert(!SCIPsepaIsInitialized(sepa));
4176 
4177  if( set->nsepas >= set->sepassize )
4178  {
4179  set->sepassize = SCIPsetCalcMemGrowSize(set, set->nsepas+1);
4180  SCIP_ALLOC( BMSreallocMemoryArray(&set->sepas, set->sepassize) );
4181  }
4182  assert(set->nsepas < set->sepassize);
4183 
4184  set->sepas[set->nsepas] = sepa;
4185  set->nsepas++;
4186  set->sepassorted = FALSE;
4187 
4188  return SCIP_OKAY;
4189 }
4190 
4191 /** returns the separator of the given name, or NULL if not existing */
4193  SCIP_SET* set, /**< global SCIP settings */
4194  const char* name /**< name of separator */
4195  )
4196 {
4197  int i;
4198 
4199  assert(set != NULL);
4200  assert(name != NULL);
4201 
4202  for( i = 0; i < set->nsepas; ++i )
4203  {
4204  if( strcmp(SCIPsepaGetName(set->sepas[i]), name) == 0 )
4205  return set->sepas[i];
4206  }
4207 
4208  return NULL;
4209 }
4210 
4211 /** sorts separators by priorities */
4212 void SCIPsetSortSepas(
4213  SCIP_SET* set /**< global SCIP settings */
4214  )
4215 {
4216  assert(set != NULL);
4218  if( !set->sepassorted )
4219  {
4220  SCIPsortPtr((void**)set->sepas, SCIPsepaComp, set->nsepas);
4221  set->sepassorted = TRUE;
4222  set->sepasnamesorted = FALSE;
4223  }
4224 }
4225 
4226 /** sorts separators by name */
4228  SCIP_SET* set /**< global SCIP settings */
4229  )
4230 {
4231  assert(set != NULL);
4233  if( !set->sepasnamesorted )
4234  {
4235  SCIPsortPtr((void**)set->sepas, SCIPsepaCompName, set->nsepas);
4236  set->sepassorted = FALSE;
4237  set->sepasnamesorted = TRUE;
4238  }
4239 }
4240 
4241 /** inserts cut selector in cut selector list */
4243  SCIP_SET* set, /**< global SCIP settings */
4244  SCIP_CUTSEL* cutsel /**< cut selector */
4245  )
4246 {
4247  assert(set != NULL);
4248  assert(cutsel != NULL);
4249  assert(!SCIPcutselIsInitialized(cutsel));
4250 
4251  if( set->ncutsels >= set->cutselssize )
4252  {
4253  set->cutselssize = SCIPsetCalcMemGrowSize(set, set->ncutsels + 1);
4254  SCIP_ALLOC( BMSreallocMemoryArray(&set->cutsels, set->cutselssize) );
4255  }
4256  assert(set->ncutsels < set->cutselssize);
4257 
4258  set->cutsels[set->ncutsels] = cutsel;
4259  set->ncutsels++;
4260  set->cutselssorted = FALSE;
4261 
4262  return SCIP_OKAY;
4263 }
4264 
4265 /** returns the cut selector of the given name, or NULL if not existing */
4267  SCIP_SET* set, /**< global SCIP settings */
4268  const char* name /**< name of separator */
4269  )
4270 {
4271  int i;
4272 
4273  assert(set != NULL);
4274  assert(name != NULL);
4275 
4276  for( i = 0; i < set->ncutsels; ++i )
4277  {
4278  if( strcmp(SCIPcutselGetName(set->cutsels[i]), name) == 0 )
4279  return set->cutsels[i];
4280  }
4281 
4282  return NULL;
4283 }
4284 
4285 /** sorts cut selectors by priorities */
4286 void SCIPsetSortCutsels(
4287  SCIP_SET* set /**< global SCIP settings */
4288  )
4289 {
4290  assert(set != NULL);
4292  if( !set->cutselssorted )
4293  {
4294  SCIPsortPtr((void**)set->cutsels, SCIPcutselComp, set->ncutsels);
4295  set->cutselssorted = TRUE;
4296  }
4297 }
4298 
4299 /** inserts propagator in propagator list */
4301  SCIP_SET* set, /**< global SCIP settings */
4302  SCIP_PROP* prop /**< propagator */
4303  )
4304 {
4305  assert(set != NULL);
4306  assert(prop != NULL);
4307  assert(!SCIPpropIsInitialized(prop));
4308 
4309  if( set->nprops >= set->propssize )
4310  {
4311  set->propssize = SCIPsetCalcMemGrowSize(set, set->nprops+1);
4312  SCIP_ALLOC( BMSreallocMemoryArray(&set->props, set->propssize) );
4313  SCIP_ALLOC( BMSreallocMemoryArray(&set->props_presol, set->propssize) );
4314  }
4315  assert(set->nprops < set->propssize);
4316 
4317  set->props[set->nprops] = prop;
4318  set->props_presol[set->nprops] = prop;
4319  set->nprops++;
4320  set->propssorted = FALSE;
4321  set->propspresolsorted = FALSE;
4322 
4323  return SCIP_OKAY;
4324 }
4325 
4326 /** returns the propagator of the given name, or NULL if not existing */
4328  SCIP_SET* set, /**< global SCIP settings */
4329  const char* name /**< name of propagator */
4330  )
4331 {
4332  int i;
4333 
4334  assert(set != NULL);
4335  assert(name != NULL);
4336 
4337  for( i = 0; i < set->nprops; ++i )
4338  {
4339  if( strcmp(SCIPpropGetName(set->props[i]), name) == 0 )
4340  return set->props[i];
4341  }
4342 
4343  return NULL;
4344 }
4346 /** sorts propagators by priorities */
4347 void SCIPsetSortProps(
4348  SCIP_SET* set /**< global SCIP settings */
4349  )
4350 {
4351  assert(set != NULL);
4352 
4353  if( !set->propssorted )
4354  {
4355  SCIPsortPtr((void**)set->props, SCIPpropComp, set->nprops);
4356  set->propssorted = TRUE;
4357  set->propsnamesorted = FALSE;
4358  }
4359 }
4360 
4361 /** sorts propagators by priorities for presolving */
4363  SCIP_SET* set /**< global SCIP settings */
4364  )
4366  assert(set != NULL);
4367 
4368  if( !set->propspresolsorted )
4369  {
4370  SCIPsortPtr((void**)set->props_presol, SCIPpropCompPresol, set->nprops);
4371  set->propspresolsorted = TRUE;
4372  set->propsnamesorted = FALSE;
4373  }
4374 }
4375 
4376 /** sorts propagators w.r.t. names */
4378  SCIP_SET* set /**< global SCIP settings */
4379  )
4380 {
4381  assert(set != NULL);
4382 
4383  if( !set->propsnamesorted )
4384  {
4385  SCIPsortPtr((void**)set->props, SCIPpropCompName, set->nprops);
4386  set->propssorted = FALSE;
4387  set->propsnamesorted = TRUE;
4388  }
4389 }
4390 
4391 /** inserts bandit virtual function table into set */
4393  SCIP_SET* set, /**< global SCIP settings */
4394  SCIP_BANDITVTABLE* banditvtable /**< bandit algorithm virtual function table */
4395  )
4396 {
4397  assert(set != NULL);
4398  assert(banditvtable != NULL);
4399 
4400  if( set->nbanditvtables >= set->banditvtablessize )
4401  {
4402  int newsize = SCIPsetCalcMemGrowSize(set, set->nbanditvtables + 1);
4403  SCIP_ALLOC( BMSreallocMemoryArray(&set->banditvtables, newsize) );
4404  set->banditvtablessize = newsize;
4405  }
4407  assert(set->nbanditvtables < set->banditvtablessize);
4408  set->banditvtables[set->nbanditvtables++] = banditvtable;
4409 
4410  return SCIP_OKAY;
4411 }
4412 
4413 /** returns the bandit virtual function table of the given name, or NULL if not existing */
4415  SCIP_SET* set, /**< global SCIP settings */
4416  const char* name /**< name of bandit algorithm virtual function table */
4417  )
4418 {
4419  int b;
4420 
4421  assert(set != NULL);
4422  assert(name != NULL);
4423 
4424  /* search for a bandit v table of the given name */
4425  for( b = 0; b < set->nbanditvtables; ++b )
4426  {
4427  if( strcmp(name, SCIPbanditvtableGetName(set->banditvtables[b])) == 0 )
4428  return set->banditvtables[b];
4429  }
4430 
4431  return NULL;
4432 }
4433 
4434 /** inserts concurrent solver type into the concurrent solver type list */
4436  SCIP_SET* set, /**< global SCIP settings */
4437  SCIP_CONCSOLVERTYPE* concsolvertype /**< concurrent solver type */
4438  )
4439 {
4440  assert(set != NULL);
4441  assert(concsolvertype != NULL);
4442 
4443  if( set->nconcsolvertypes >= set->concsolvertypessize )
4444  {
4445  set->concsolvertypessize = SCIPsetCalcMemGrowSize(set, set->nconcsolvertypes + 1);
4446  SCIP_ALLOC( BMSreallocMemoryArray(&set->concsolvertypes, set->concsolvertypessize) );
4447  }
4448  assert(set->nconcsolvertypes < set->concsolvertypessize);
4449 
4450  set->concsolvertypes[set->nconcsolvertypes] = concsolvertype;
4451  set->nconcsolvertypes++;
4452 
4453  return SCIP_OKAY;
4454 }
4455 
4456 /** returns the concurrent solver type with the given name, or NULL if not existing */
4458  SCIP_SET* set, /**< global SCIP settings */
4459  const char* name /**< name of concurrent solver type */
4460  )
4461 {
4462  int i;
4463 
4464  assert(set != NULL);
4465  assert(name != NULL);
4466 
4467  for( i = 0; i < set->nconcsolvertypes; ++i )
4468  {
4469  if( strcmp(SCIPconcsolverTypeGetName(set->concsolvertypes[i]), name) == 0 )
4470  return set->concsolvertypes[i];
4471  }
4472 
4473  return NULL;
4474 }
4475 
4476 /** inserts concurrent solver into the concurrent solver list */
4478  SCIP_SET* set, /**< global SCIP settings */
4479  SCIP_CONCSOLVER* concsolver /**< concurrent solver */
4480  )
4481 {
4482  assert(set != NULL);
4483  assert(concsolver != NULL);
4484 
4485  if( set->nconcsolvers >= set->concsolverssize )
4486  {
4487  set->concsolverssize = SCIPsetCalcMemGrowSize(set, set->nconcsolvers + 1);
4488  SCIP_ALLOC( BMSreallocMemoryArray(&set->concsolvers, set->concsolverssize) );
4489  }
4490  assert(set->nconcsolvers < set->concsolverssize);
4491 
4492  set->concsolvers[set->nconcsolvers] = concsolver;
4493  assert(set->nconcsolvers == SCIPconcsolverGetIdx(concsolver));
4494 
4495  set->nconcsolvers++;
4496 
4497  return SCIP_OKAY;
4498 }
4499 
4500 /** frees all concurrent solvers in the concurrent solver list */
4502  SCIP_SET* set /**< global SCIP settings */
4503  )
4504 {
4505  int i;
4506  assert(set != NULL);
4507 
4508  /* call user callback for each concurrent solver */
4509  for( i = 0; i < set->nconcsolvers; ++i )
4510  {
4511  SCIP_CALL( SCIPconcsolverDestroyInstance(set, &set->concsolvers[i]) );
4512  }
4513 
4514  /* set size and number to zero and free the concurent solver array */
4515  set->nconcsolvers = 0;
4516  set->concsolverssize = 0;
4517  BMSfreeMemoryArrayNull(&set->concsolvers);
4518 
4519  return SCIP_OKAY;
4520 }
4521 
4522 /** inserts primal heuristic in primal heuristic list */
4524  SCIP_SET* set, /**< global SCIP settings */
4525  SCIP_HEUR* heur /**< primal heuristic */
4526  )
4527 {
4528  assert(set != NULL);
4529  assert(heur != NULL);
4530  assert(!SCIPheurIsInitialized(heur));
4531 
4532  if( set->nheurs >= set->heurssize )
4533  {
4534  set->heurssize = SCIPsetCalcMemGrowSize(set, set->nheurs+1);
4535  SCIP_ALLOC( BMSreallocMemoryArray(&set->heurs, set->heurssize) );
4536  }
4537  assert(set->nheurs < set->heurssize);
4538 
4539  set->heurs[set->nheurs] = heur;
4540  set->nheurs++;
4541  set->heurssorted = FALSE;
4542 
4543  return SCIP_OKAY;
4544 }
4545 
4546 /** returns the primal heuristic of the given name, or NULL if not existing */
4548  SCIP_SET* set, /**< global SCIP settings */
4549  const char* name /**< name of primal heuristic */
4550  )
4551 {
4552  int i;
4553 
4554  assert(set != NULL);
4555  assert(name != NULL);
4557  for( i = 0; i < set->nheurs; ++i )
4558  {
4559  if( strcmp(SCIPheurGetName(set->heurs[i]), name) == 0 )
4560  return set->heurs[i];
4561  }
4562 
4563  return NULL;
4564 }
4565 
4566 /** sorts heuristics by their delay positions and priorities */
4567 void SCIPsetSortHeurs(
4568  SCIP_SET* set /**< global SCIP settings */
4569  )
4570 {
4571  assert(set != NULL);
4572 
4573  if( !set->heurssorted )
4574  {
4575  SCIPsortPtr((void**)set->heurs, SCIPheurComp, set->nheurs);
4576  set->heurssorted = TRUE;
4577  set->heursnamesorted = FALSE;
4578  }
4579 }
4581 /** sorts heuristics by names */
4583  SCIP_SET* set /**< global SCIP settings */
4584  )
4585 {
4586  assert(set != NULL);
4587 
4588  if( !set->heursnamesorted )
4589  {
4590  SCIPsortPtr((void**)set->heurs, SCIPheurCompName, set->nheurs);
4591  set->heurssorted = FALSE;
4592  set->heursnamesorted = TRUE;
4593  }
4594 }
4595 
4596 /** inserts tree compression in tree compression list */
4598  SCIP_SET* set, /**< global SCIP settings */
4599  SCIP_COMPR* compr /**< tree compression */
4600  )
4601 {
4602  assert(set != NULL);
4603  assert(compr != NULL);
4604  assert(!SCIPcomprIsInitialized(compr));
4605 
4606  if( set->ncomprs >= set->comprssize )
4607  {
4608  set->comprssize = SCIPsetCalcMemGrowSize(set, set->ncomprs+1);
4609  SCIP_ALLOC( BMSreallocMemoryArray(&set->comprs, set->comprssize) );
4610  }
4611  assert(set->ncomprs < set->comprssize);
4612 
4613  set->comprs[set->ncomprs] = compr;
4614  set->ncomprs++;
4615  set->comprssorted = FALSE;
4616 
4617  return SCIP_OKAY;
4618 }
4619 
4620 /** returns the tree compression of the given name, or NULL if not existing */
4622  SCIP_SET* set, /**< global SCIP settings */
4623  const char* name /**< name of tree compression */
4624  )
4625 {
4626  int i;
4627 
4628  assert(set != NULL);
4629  assert(name != NULL);
4630 
4631  for( i = 0; i < set->ncomprs; ++i )
4632  {
4633  if( strcmp(SCIPcomprGetName(set->comprs[i]), name) == 0 )
4634  return set->comprs[i];
4635  }
4636 
4637  return NULL;
4638 }
4639 
4640 /** sorts compressions by priorities */
4641 void SCIPsetSortComprs(
4642  SCIP_SET* set /**< global SCIP settings */
4643  )
4644 {
4645  assert(set != NULL);
4647  if( !set->comprssorted )
4648  {
4649  SCIPsortPtr((void**)set->comprs, SCIPcomprComp, set->ncomprs);
4650  set->comprssorted = TRUE;
4651  set->comprsnamesorted = FALSE;
4652  }
4653 }
4654 
4655 /** sorts heuristics by names */
4657  SCIP_SET* set /**< global SCIP settings */
4658  )
4659 {
4660  assert(set != NULL);
4662  if( !set->comprsnamesorted )
4663  {
4664  SCIPsortPtr((void**)set->comprs, SCIPcomprCompName, set->ncomprs);
4665  set->comprssorted = FALSE;
4666  set->comprsnamesorted = TRUE;
4667  }
4668 }
4669 
4670 /** inserts event handler in event handler list */
4672  SCIP_SET* set, /**< global SCIP settings */
4673  SCIP_EVENTHDLR* eventhdlr /**< event handler */
4674  )
4675 {
4676  assert(set != NULL);
4677  assert(eventhdlr != NULL);
4678  assert(!SCIPeventhdlrIsInitialized(eventhdlr));
4679 
4680  if( set->neventhdlrs >= set->eventhdlrssize )
4681  {
4682  set->eventhdlrssize = SCIPsetCalcMemGrowSize(set, set->neventhdlrs+1);
4683  SCIP_ALLOC( BMSreallocMemoryArray(&set->eventhdlrs, set->eventhdlrssize) );
4684  }
4685  assert(set->neventhdlrs < set->eventhdlrssize);
4686 
4687  set->eventhdlrs[set->neventhdlrs] = eventhdlr;
4688  set->neventhdlrs++;
4689 
4690  return SCIP_OKAY;
4691 }
4692 
4693 /** returns the event handler of the given name, or NULL if not existing */
4695  SCIP_SET* set, /**< global SCIP settings */
4696  const char* name /**< name of event handler */
4697  )
4698 {
4699  int i;
4701  assert(set != NULL);
4702  assert(name != NULL);
4703 
4704  for( i = 0; i < set->neventhdlrs; ++i )
4705  {
4706  if( strcmp(SCIPeventhdlrGetName(set->eventhdlrs[i]), name) == 0 )
4707  return set->eventhdlrs[i];
4708  }
4709 
4710  return NULL;
4711 }
4712 
4713 /** inserts node selector in node selector list */
4715  SCIP_SET* set, /**< global SCIP settings */
4716  SCIP_NODESEL* nodesel /**< node selector */
4717  )
4718 {
4719  int i;
4720  int nodeselstdprio;
4721 
4722  assert(set != NULL);
4723  assert(nodesel != NULL);
4724  assert(!SCIPnodeselIsInitialized(nodesel));
4725 
4726  if( set->nnodesels >= set->nodeselssize )
4727  {
4728  set->nodeselssize = SCIPsetCalcMemGrowSize(set, set->nnodesels+1);
4729  SCIP_ALLOC( BMSreallocMemoryArray(&set->nodesels, set->nodeselssize) );
4730  }
4731  assert(set->nnodesels < set->nodeselssize);
4732 
4733  nodeselstdprio = SCIPnodeselGetStdPriority(nodesel);
4734 
4735  for( i = set->nnodesels; i > 0 && nodeselstdprio > SCIPnodeselGetStdPriority(set->nodesels[i-1]); --i )
4736  set->nodesels[i] = set->nodesels[i-1];
4737 
4738  set->nodesels[i] = nodesel;
4739  set->nnodesels++;
4740 
4741  return SCIP_OKAY;
4742 }
4743 
4744 /** returns the node selector of the given name, or NULL if not existing */
4746  SCIP_SET* set, /**< global SCIP settings */
4747  const char* name /**< name of event handler */
4748  )
4749 {
4750  int i;
4751 
4752  assert(set != NULL);
4753  assert(name != NULL);
4754 
4755  for( i = 0; i < set->nnodesels; ++i )
4756  {
4757  if( strcmp(SCIPnodeselGetName(set->nodesels[i]), name) == 0 )
4758  return set->nodesels[i];
4759  }
4760 
4761  return NULL;
4762 }
4763 
4764 /** returns node selector with highest priority in the current mode */
4766  SCIP_SET* set, /**< global SCIP settings */
4767  SCIP_STAT* stat /**< dynamic problem statistics */
4768  )
4769 {
4770  assert(set != NULL);
4771  assert(stat != NULL);
4772 
4773  /* check, if old node selector is still valid */
4774  if( set->nodesel == NULL && set->nnodesels > 0 )
4775  {
4776  int i;
4777 
4778  set->nodesel = set->nodesels[0];
4779 
4780  /* search highest priority node selector */
4781  if( stat->memsavemode )
4782  {
4783  for( i = 1; i < set->nnodesels; ++i )
4784  {
4785  if( SCIPnodeselGetMemsavePriority(set->nodesels[i]) > SCIPnodeselGetMemsavePriority(set->nodesel) )
4786  set->nodesel = set->nodesels[i];
4787  }
4788  }
4789  else
4790  {
4791  for( i = 1; i < set->nnodesels; ++i )
4792  {
4794  set->nodesel = set->nodesels[i];
4795  }
4796  }
4797  }
4798 
4799  return set->nodesel;
4800 }
4801 
4802 /** inserts branching rule in branching rule list */
4804  SCIP_SET* set, /**< global SCIP settings */
4805  SCIP_BRANCHRULE* branchrule /**< branching rule */
4806  )
4807 {
4808  assert(set != NULL);
4809  assert(branchrule != NULL);
4810  assert(!SCIPbranchruleIsInitialized(branchrule));
4811 
4812  if( set->nbranchrules >= set->branchrulessize )
4813  {
4814  set->branchrulessize = SCIPsetCalcMemGrowSize(set, set->nbranchrules+1);
4815  SCIP_ALLOC( BMSreallocMemoryArray(&set->branchrules, set->branchrulessize) );
4816  }
4817  assert(set->nbranchrules < set->branchrulessize);
4818 
4819  set->branchrules[set->nbranchrules] = branchrule;
4820  set->nbranchrules++;
4821  set->branchrulessorted = FALSE;
4822 
4823  return SCIP_OKAY;
4825 
4826 /** returns the branching rule of the given name, or NULL if not existing */
4828  SCIP_SET* set, /**< global SCIP settings */
4829  const char* name /**< name of event handler */
4830  )
4831 {
4832  int i;
4833 
4834  assert(set != NULL);
4835  assert(name != NULL);
4836 
4837  for( i = 0; i < set->nbranchrules; ++i )
4838  {
4839  if( strcmp(SCIPbranchruleGetName(set->branchrules[i]), name) == 0 )
4840  return set->branchrules[i];
4841  }
4842 
4843  return NULL;
4845 
4846 /** sorts branching rules by priorities */
4848  SCIP_SET* set /**< global SCIP settings */
4849  )
4850 {
4851  assert(set != NULL);
4852 
4853  if( !set->branchrulessorted )
4854  {
4855  SCIPsortPtr((void**)set->branchrules, SCIPbranchruleComp, set->nbranchrules);
4856  set->branchrulessorted = TRUE;
4857  set->branchrulesnamesorted = FALSE;
4858  }
4859 }
4860 
4861 /** sorts branching rules by priorities */
4863  SCIP_SET* set /**< global SCIP settings */
4864  )
4865 {
4866  assert(set != NULL);
4867 
4868  if( !set->branchrulesnamesorted )
4869  {
4870  SCIPsortPtr((void**)set->branchrules, SCIPbranchruleCompName, set->nbranchrules);
4871  set->branchrulessorted = FALSE;
4872  set->branchrulesnamesorted = TRUE;
4873  }
4874 }
4875 
4876 /** inserts display column in display column list */
4878  SCIP_SET* set, /**< global SCIP settings */
4879  SCIP_DISP* disp /**< display column */
4880  )
4881 {
4882  int i;
4883  int disppos;
4884 
4885  assert(set != NULL);
4886  assert(disp != NULL);
4887  assert(!SCIPdispIsInitialized(disp));
4888 
4889  if( set->ndisps >= set->dispssize )
4890  {
4891  set->dispssize = SCIPsetCalcMemGrowSize(set, set->ndisps+1);
4892  SCIP_ALLOC( BMSreallocMemoryArray(&set->disps, set->dispssize) );
4893  }
4894  assert(set->ndisps < set->dispssize);
4895 
4896  disppos = SCIPdispGetPosition(disp);
4897 
4898  for( i = set->ndisps; i > 0 && disppos < SCIPdispGetPosition(set->disps[i-1]); --i )
4899  {
4900  set->disps[i] = set->disps[i-1];
4901  }
4902  set->disps[i] = disp;
4903  set->ndisps++;
4904 
4905  return SCIP_OKAY;
4907 
4908 /** returns the display column of the given name, or NULL if not existing */
4910  SCIP_SET* set, /**< global SCIP settings */
4911  const char* name /**< name of display */
4912  )
4913 {
4914  int i;
4915 
4916  assert(set != NULL);
4917  assert(name != NULL);
4918 
4919  for( i = 0; i < set->ndisps; ++i )
4920  {
4921  if( strcmp(SCIPdispGetName(set->disps[i]), name) == 0 )
4922  return set->disps[i];
4923  }
4924 
4925  return NULL;
4927 
4928 /** inserts statistics table in statistics table list */
4930  SCIP_SET* set, /**< global SCIP settings */
4931  SCIP_TABLE* table /**< statistics table */
4932  )
4933 {
4934  assert(set != NULL);
4935  assert(table != NULL);
4936  assert(!SCIPtableIsInitialized(table));
4937 
4938  if( set->ntables >= set->tablessize )
4939  {
4940  set->tablessize = SCIPsetCalcMemGrowSize(set, set->ntables+1);
4941  SCIP_ALLOC( BMSreallocMemoryArray(&set->tables, set->tablessize) );
4942  }
4943  assert(set->ntables < set->tablessize);
4944 
4945  /* we insert in arbitrary order and sort once before printing statistics */
4946  set->tables[set->ntables] = table;
4947  set->ntables++;
4948  set->tablessorted = FALSE;
4949 
4950  return SCIP_OKAY;
4951 }
4952 
4953 /** returns the statistics table of the given name, or NULL if not existing */
4955  SCIP_SET* set, /**< global SCIP settings */
4956  const char* name /**< name of statistics table */
4957  )
4958 {
4959  int i;
4960 
4961  assert(set != NULL);
4962  assert(name != NULL);
4963 
4964  for( i = 0; i < set->ntables; ++i )
4965  {
4966  if( strcmp(SCIPtableGetName(set->tables[i]), name) == 0 )
4967  return set->tables[i];
4968  }
4969 
4970  return NULL;
4971 }
4972 
4973 /** inserts dialog in dialog list */
4975  SCIP_SET* set, /**< global SCIP settings */
4976  SCIP_DIALOG* dialog /**< dialog */
4977  )
4978 {
4979  assert(set != NULL);
4980  assert(dialog != NULL);
4981 
4982  if( set->ndialogs >= set->dialogssize )
4983  {
4984  set->dialogssize = SCIPsetCalcMemGrowSize(set, set->ndialogs+1);
4985  SCIP_ALLOC( BMSreallocMemoryArray(&set->dialogs, set->dialogssize) );
4986  }
4987  assert(set->ndialogs < set->dialogssize);
4989  set->dialogs[set->ndialogs] = dialog;
4990  set->ndialogs++;
4991 
4992  return SCIP_OKAY;
4993 }
4994 
4995 /** returns if the dialog already exists */
4997  SCIP_SET* set, /**< global SCIP settings */
4998  SCIP_DIALOG* dialog /**< dialog */
4999  )
5000 {
5001  int i;
5002 
5003  assert(set != NULL);
5004 
5005  if( dialog == NULL )
5006  return FALSE;
5007 
5008  for( i = 0; i < set->ndialogs; ++i )
5009  {
5010  if( set->dialogs[i] == dialog )
5011  return TRUE;
5012  }
5013 
5014  return FALSE;
5015 }
5016 
5017 /** inserts expression handler in expression handler list */
5019  SCIP_SET* set, /**< global SCIP settings */
5020  SCIP_EXPRHDLR* exprhdlr /**< expression handler */
5021  )
5022 {
5023  assert(set != NULL);
5024  assert(exprhdlr != NULL);
5025 
5026  if( set->nexprhdlrs >= set->exprhdlrssize )
5027  {
5028  set->exprhdlrssize = SCIPsetCalcMemGrowSize(set, set->nexprhdlrs+1);
5029  SCIP_ALLOC( BMSreallocMemoryArray(&set->exprhdlrs, set->exprhdlrssize) );
5030  }
5031  assert(set->nexprhdlrs < set->exprhdlrssize);
5032 
5033  set->exprhdlrs[set->nexprhdlrs] = exprhdlr;
5034  set->nexprhdlrs++;
5035  set->exprhdlrssorted = FALSE;
5036 
5037  if( set->exprhdlrvar == NULL && strcmp(SCIPexprhdlrGetName(exprhdlr), "var") == 0 )
5038  set->exprhdlrvar = exprhdlr;
5039  else if( set->exprhdlrval == NULL && strcmp(SCIPexprhdlrGetName(exprhdlr), "val") == 0 )
5040  set->exprhdlrval = exprhdlr;
5041  else if( set->exprhdlrsum == NULL && strcmp(SCIPexprhdlrGetName(exprhdlr), "sum") == 0 )
5042  set->exprhdlrsum = exprhdlr;
5043  else if( set->exprhdlrproduct == NULL && strcmp(SCIPexprhdlrGetName(exprhdlr), "prod") == 0 )
5044  set->exprhdlrproduct = exprhdlr;
5045  else if( set->exprhdlrpow == NULL && strcmp(SCIPexprhdlrGetName(exprhdlr), "pow") == 0 )
5046  set->exprhdlrpow = exprhdlr;
5047 
5048  return SCIP_OKAY;
5049 }
5050 
5051 /** returns the expression handler of the given name, or NULL if not existing */
5053  SCIP_SET* set, /**< global SCIP settings */
5054  const char* name /**< name of expression handler */
5055  )
5056 {
5057  int i;
5058 
5059  assert(set != NULL);
5060  assert(name != NULL);
5061 
5062  for( i = 0; i < set->nexprhdlrs; ++i )
5063  if( strcmp(SCIPexprhdlrGetName(set->exprhdlrs[i]), name) == 0 )
5064  return set->exprhdlrs[i];
5065 
5066  return NULL;
5067 }
5068 
5069 /** sorts expression handlers by name */
5071  SCIP_SET* set /**< global SCIP settings */
5072  )
5073 {
5074  assert(set != NULL);
5076  if( !set->exprhdlrssorted )
5077  {
5078  SCIPsortPtr((void**)set->exprhdlrs, SCIPexprhdlrComp, set->nexprhdlrs);
5079  set->exprhdlrssorted = TRUE;
5080  }
5081 }
5082 
5083 /** inserts NLPI in NLPI list */
5085  SCIP_SET* set, /**< global SCIP settings */
5086  SCIP_NLPI* nlpi /**< NLPI */
5087  )
5088 {
5089  assert(set != NULL);
5090  assert(nlpi != NULL);
5091 
5092  if( set->nnlpis >= set->nlpissize )
5093  {
5094  set->nlpissize = SCIPsetCalcMemGrowSize(set, set->nnlpis+1);
5095  SCIP_ALLOC( BMSreallocMemoryArray(&set->nlpis, set->nlpissize) );
5096  }
5097  assert(set->nnlpis < set->nlpissize);
5098 
5099  set->nlpis[set->nnlpis] = nlpi;
5100  set->nnlpis++;
5101  set->nlpissorted = FALSE;
5102 
5103  return SCIP_OKAY;
5104 }
5105 
5106 /** returns the NLPI of the given name, or NULL if not existing */
5108  SCIP_SET* set, /**< global SCIP settings */
5109  const char* name /**< name of NLPI */
5110  )
5111 {
5112  int i;
5113 
5114  assert(set != NULL);
5115  assert(name != NULL);
5116 
5117  for( i = 0; i < set->nnlpis; ++i )
5118  {
5119  if( strcmp(SCIPnlpiGetName(set->nlpis[i]), name) == 0 )
5120  return set->nlpis[i];
5121  }
5122 
5123  return NULL;
5124 }
5125 
5126 /** sorts NLPIs by priorities */
5127 void SCIPsetSortNlpis(
5128  SCIP_SET* set /**< global SCIP settings */
5129  )
5130 {
5131  assert(set != NULL);
5132 
5133  if( !set->nlpissorted )
5134  {
5135  SCIPsortPtr((void**)set->nlpis, SCIPnlpiComp, set->nnlpis);
5136  set->nlpissorted = TRUE;
5137  }
5138 }
5139 
5140 /** set priority of an NLPI */
5142  SCIP_SET* set, /**< global SCIP settings */
5143  SCIP_NLPI* nlpi, /**< NLPI */
5144  int priority /**< new priority of NLPI */
5145  )
5146 {
5147  assert(set != NULL);
5148  assert(nlpi != NULL);
5150  SCIPnlpiSetPriority(nlpi, priority);
5151  set->nlpissorted = FALSE;
5152 }
5153 
5154 /** inserts information about an external code in external codes list */
5156  SCIP_SET* set, /**< global SCIP settings */
5157  const char* name, /**< name of external code */
5158  const char* description /**< description of external code, can be NULL */
5159  )
5160 {
5161  assert(set != NULL);
5162  assert(name != NULL);
5164  if( set->nextcodes >= set->extcodessize )
5165  {
5166  set->extcodessize = SCIPsetCalcMemGrowSize(set, set->nextcodes+1);
5167  SCIP_ALLOC( BMSreallocMemoryArray(&set->extcodenames, set->extcodessize) );
5168  SCIP_ALLOC( BMSreallocMemoryArray(&set->extcodedescs, set->extcodessize) );
5169  }
5170  assert(set->nextcodes < set->extcodessize);
5171 
5172  BMSduplicateMemoryArray(&(set->extcodenames[set->nextcodes]), name, (int) (strlen(name)+1)); /*lint !e866*/
5173  if( description != NULL )
5174  {
5175  BMSduplicateMemoryArray(&(set->extcodedescs[set->nextcodes]), description, (int) (strlen(description)+1)); /*lint !e866*/
5176  }
5177  else
5178  {
5179  set->extcodedescs[set->nextcodes] = NULL;
5180  }
5181  set->nextcodes++;
5182 
5183  return SCIP_OKAY;
5184 }
5185 
5186 /** calls init methods of all plugins */
5188  SCIP_SET* set, /**< global SCIP settings */
5189  BMS_BLKMEM* blkmem, /**< block memory */
5190  SCIP_STAT* stat /**< dynamic problem statistics */
5191  )
5192 {
5193  int i;
5194 
5195  assert(set != NULL);
5196 
5197  /* active variable pricers */
5198  SCIPsetSortPricers(set);
5199  for( i = 0; i < set->nactivepricers; ++i )
5200  {
5201  SCIP_CALL( SCIPpricerInit(set->pricers[i], set) );
5202  }
5203 
5204  /* Benders' decomposition algorithm */
5205  SCIPsetSortBenders(set);
5206  for( i = 0; i < set->nactivebenders; ++i )
5207  {
5208  SCIP_CALL( SCIPbendersInit(set->benders[i], set) );
5209  }
5210 
5211  /* constraint handlers */
5212  for( i = 0; i < set->nconshdlrs; ++i )
5213  {
5214  SCIP_CALL( SCIPconshdlrInit(set->conshdlrs[i], blkmem, set, stat) );
5215  }
5216 
5217  /* conflict handlers */
5218  for( i = 0; i < set->nconflicthdlrs; ++i )
5219  {
5220  SCIP_CALL( SCIPconflicthdlrInit(set->conflicthdlrs[i], set) );
5221  }
5222 
5223  /* presolvers */
5224  for( i = 0; i < set->npresols; ++i )
5225  {
5226  SCIP_CALL( SCIPpresolInit(set->presols[i], set) );
5227  }
5228 
5229  /* relaxators */
5230  for( i = 0; i < set->nrelaxs; ++i )
5231  {
5232  SCIP_CALL( SCIPrelaxInit(set->relaxs[i], set) );
5233  }
5235  /* separators */
5236  for( i = 0; i < set->nsepas; ++i )
5237  {
5238  SCIP_CALL( SCIPsepaInit(set->sepas[i], set) );
5239  }
5240 
5241  /* cut selectors */
5242  for( i = 0; i < set->ncutsels; ++i )
5243  {
5244  SCIP_CALL( SCIPcutselInit(set->cutsels[i], set) );
5245  }
5246 
5247  /* propagators */
5248  for( i = 0; i < set->nprops; ++i )
5249  {
5250  SCIP_CALL( SCIPpropInit(set->props[i], set) );
5251  }
5252 
5253  /* primal heuristics */
5254  for( i = 0; i < set->nheurs; ++i )
5255  {
5256  SCIP_CALL( SCIPheurInit(set->heurs[i], set) );
5257  }
5258 
5259  /* tree compression */
5260  for( i = 0; i < set->ncomprs; ++i )
5261  {
5262  SCIP_CALL( SCIPcomprInit(set->comprs[i], set) );
5263  }
5264 
5265  /* event handlers */
5266  for( i = 0; i < set->neventhdlrs; ++i )
5267  {
5268  SCIP_CALL( SCIPeventhdlrInit(set->eventhdlrs[i], set) );
5269  }
5270 
5271  /* node selectors */
5272  for( i = 0; i < set->nnodesels; ++i )
5273  {
5274  SCIP_CALL( SCIPnodeselInit(set->nodesels[i], set) );
5275  }
5276 
5277  /* branching rules */
5278  for( i = 0; i < set->nbranchrules; ++i )
5279  {
5280  SCIP_CALL( SCIPbranchruleInit(set->branchrules[i], set) );
5281  }
5282 
5283  /* display columns */
5284  for( i = 0; i < set->ndisps; ++i )
5285  {
5286  SCIP_CALL( SCIPdispInit(set->disps[i], set) );
5287  }
5289 
5290  /* statistics tables */
5291  for( i = 0; i < set->ntables; ++i )
5292  {
5293  SCIP_CALL( SCIPtableInit(set->tables[i], set) );
5294  }
5295 
5296  /* expression handlers */
5297  for( i = 0; i < set->nexprhdlrs; ++i )
5298  SCIPexprhdlrInit(set->exprhdlrs[i], set);
5299 
5300  /* NLP solver interfaces */
5301  for( i = 0; i < set->nnlpis; ++i )
5302  SCIPnlpiInit(set->nlpis[i]);
5303 
5304  return SCIP_OKAY;
5305 }
5306 
5307 /** calls exit methods of all plugins */
5309  SCIP_SET* set, /**< global SCIP settings */
5310  BMS_BLKMEM* blkmem, /**< block memory */
5311  SCIP_STAT* stat /**< dynamic problem statistics */
5312  )
5313 {
5314  int i;
5315 
5316  assert(set != NULL);
5317 
5318  /* active variable pricers */
5319  SCIPsetSortPricers(set);
5320  for( i = 0; i < set->nactivepricers; ++i )
5321  {
5322  SCIP_CALL( SCIPpricerExit(set->pricers[i], set) );
5323  }
5324 
5325  /* Benders' decomposition */
5326  SCIPsetSortBenders(set);
5327  for( i = 0; i < set->nactivebenders; ++i )
5328  {
5329  SCIP_CALL( SCIPbendersExit(set->benders[i], set) );
5330  }
5331 
5332  /* constraint handlers */
5333  for( i = 0; i < set->nconshdlrs; ++i )
5334  {
5335  SCIP_CALL( SCIPconshdlrExit(set->conshdlrs[i], blkmem, set, stat) );
5336  }
5337 
5338  /* conflict handlers */
5339  for( i = 0; i < set->nconflicthdlrs; ++i )
5340  {
5341  SCIP_CALL( SCIPconflicthdlrExit(set->conflicthdlrs[i], set) );
5342  }
5343 
5344  /* presolvers */
5345  for( i = 0; i < set->npresols; ++i )
5346  {
5347  SCIP_CALL( SCIPpresolExit(set->presols[i], set) );
5348  }
5349 
5350  /* relaxators */
5351  for( i = 0; i < set->nrelaxs; ++i )
5352  {
5353  SCIP_CALL( SCIPrelaxExit(set->relaxs[i], set) );
5354  }
5355 
5356  /* separators */
5357  for( i = 0; i < set->nsepas; ++i )
5358  {
5359  SCIP_CALL( SCIPsepaExit(set->sepas[i], set) );
5360  }
5361 
5362  /* cut selectors */
5363  for( i = 0; i < set->ncutsels; ++i )
5364  {
5365  SCIP_CALL( SCIPcutselExit(set->cutsels[i], set) );
5366  }
5367 
5368  /* propagators */
5369  for( i = 0; i < set->nprops; ++i )
5370  {
5371  SCIP_CALL( SCIPpropExit(set->props[i], set) );
5372  }
5373 
5374  /* primal heuristics */
5375  for( i = 0; i < set->nheurs; ++i )
5376  {
5377  SCIP_CALL( SCIPheurExit(set->heurs[i], set) );
5378  }
5379 
5380  /* tree compression */
5381  for( i = 0; i < set->ncomprs; ++i )
5382  {
5383  SCIP_CALL( SCIPcomprExit(set->comprs[i], set) );
5384  }
5385 
5386  /* event handlers */
5387  for( i = 0; i < set->neventhdlrs; ++i )
5388  {
5389  SCIP_CALL( SCIPeventhdlrExit(set->eventhdlrs[i], set) );
5390  }
5391 
5392  /* node selectors */
5393  for( i = 0; i < set->nnodesels; ++i )
5394  {
5395  SCIP_CALL( SCIPnodeselExit(set->nodesels[i], set) );
5396  }
5397 
5398  /* branching rules */
5399  for( i = 0; i < set->nbranchrules; ++i )
5400  {
5401  SCIP_CALL( SCIPbranchruleExit(set->branchrules[i], set) );
5402  }
5403 
5404  /* display columns */
5405  for( i = 0; i < set->ndisps; ++i )
5406  {
5407  SCIP_CALL( SCIPdispExit(set->disps[i], set) );
5408  }
5409 
5410  /* statistics tables */
5411  for( i = 0; i < set->ntables; ++i )
5412  {
5413  SCIP_CALL( SCIPtableExit(set->tables[i], set) );
5414  }
5415 
5416  return SCIP_OKAY;
5417 }
5418 
5419 /** calls initpre methods of all plugins */
5421  SCIP_SET* set, /**< global SCIP settings */
5422  BMS_BLKMEM* blkmem, /**< block memory */
5423  SCIP_STAT* stat /**< dynamic problem statistics */
5424  )
5425 {
5426  int i;
5427 
5428  assert(set != NULL);
5429 
5430  /* inform presolvers that the presolving is about to begin */
5431  for( i = 0; i < set->npresols; ++i )
5432  {
5433  SCIP_CALL( SCIPpresolInitpre(set->presols[i], set) );
5434  }
5435 
5436  /* inform propagators that the presolving is about to begin */
5437  for( i = 0; i < set->nprops; ++i )
5438  {
5439  SCIP_CALL( SCIPpropInitpre(set->props[i], set) );
5440  }
5441 
5442  /* inform constraint handlers that the presolving is about to begin */
5443  for( i = 0; i < set->nconshdlrs; ++i )
5444  {
5445  SCIP_CALL( SCIPconshdlrInitpre(set->conshdlrs[i], blkmem, set, stat) );
5446  }
5447 
5448  /* inform Benders' decomposition that the presolving is about to begin */
5449  for( i = 0; i < set->nactivebenders; ++i )
5450  {
5451  SCIP_CALL( SCIPbendersInitpre(set->benders[i], set, stat) );
5452  }
5453 
5454  return SCIP_OKAY;
5455 }
5456 
5457 /** calls exitpre methods of all plugins */
5459  SCIP_SET* set, /**< global SCIP settings */
5460  BMS_BLKMEM* blkmem, /**< block memory */
5461  SCIP_STAT* stat /**< dynamic problem statistics */
5462  )
5463 {
5464  int i;
5465 
5466  assert(set != NULL);
5467 
5468  /* inform presolvers that the presolving is about to end */
5469  for( i = 0; i < set->npresols; ++i )
5470  {
5471  SCIP_CALL( SCIPpresolExitpre(set->presols[i], set) );
5472  }
5473 
5474  /* inform propagators that the presolving is about to end */
5475  for( i = 0; i < set->nprops; ++i )
5476  {
5477  SCIP_CALL( SCIPpropExitpre(set->props[i], set) );
5478  }
5479 
5480  /* inform constraint handlers that the presolving is about to end */
5481  for( i = 0; i < set->nconshdlrs; ++i )
5482  {
5483  SCIP_CALL( SCIPconshdlrExitpre(set->conshdlrs[i], blkmem, set, stat) );
5484  }
5485 
5486  /* inform Benders' decomposition that the presolving is about to end */
5487  for( i = 0; i < set->nactivebenders; ++i )
5488  {
5489  SCIP_CALL( SCIPbendersExitpre(set->benders[i], set, stat) );
5490  }
5491 
5492  return SCIP_OKAY;
5493 }
5494 
5495 /** calls initsol methods of all plugins */
5497  SCIP_SET* set, /**< global SCIP settings */
5498  BMS_BLKMEM* blkmem, /**< block memory */
5499  SCIP_STAT* stat /**< dynamic problem statistics */
5500  )
5501 {
5502  int i;
5503 
5504  assert(set != NULL);
5505 
5506  /* reset SCIP-defined feasibility tolerance for relaxations
5507  * if this is invalid, then only the relaxation specific feasibility tolerance,
5508  * e.g., numerics/lpfeastol is applied
5509  * SCIP plugins or core may set num_relaxfeastol to request a
5510  * tighter feasibility tolerance, though
5511  * see also documentation of SCIPchgRelaxfeastol
5512  */
5513  set->num_relaxfeastol = SCIP_INVALID;
5514 
5515  /* active variable pricers */
5516  SCIPsetSortPricers(set);
5517  for( i = 0; i < set->nactivepricers; ++i )
5518  {
5519  SCIP_CALL( SCIPpricerInitsol(set->pricers[i], set) );
5520  }
5521 
5522  /* Benders' decomposition */
5523  SCIPsetSortBenders(set);
5524  for( i = 0; i < set->nactivebenders; ++i )
5525  {
5526  SCIP_CALL( SCIPbendersInitsol(set->benders[i], set) );
5527  }
5528 
5529  /* constraint handlers */
5530  for( i = 0; i < set->nconshdlrs; ++i )
5531  {
5532  SCIP_CALL( SCIPconshdlrInitsol(set->conshdlrs[i], blkmem, set, stat) );
5533  }
5534 
5535  /* conflict handlers */
5536  for( i = 0; i < set->nconflicthdlrs; ++i )
5537  {
5538  SCIP_CALL( SCIPconflicthdlrInitsol(set->conflicthdlrs[i], set) );
5539  }
5540 
5541  /* relaxators */
5542  for( i = 0; i < set->nrelaxs; ++i )
5543  {
5544  SCIP_CALL( SCIPrelaxInitsol(set->relaxs[i], set) );
5545  }
5546 
5547  /* separators */
5548  for( i = 0; i < set->nsepas; ++i )
5549  {
5550  SCIP_CALL( SCIPsepaInitsol(set->sepas[i], set) );
5551  }
5552 
5553  /* cut selectors */
5554  for( i =0; i < set->ncutsels; ++i )
5555  {
5556  SCIP_CALL( SCIPcutselInitsol(set->cutsels[i], set) );
5557  }
5558 
5559  /* propagators */
5560  for( i = 0; i < set->nprops; ++i )
5561  {
5562  SCIP_CALL( SCIPpropInitsol(set->props[i], set) );
5563  }
5564 
5565  /* primal heuristics */
5566  for( i = 0; i < set->nheurs; ++i )
5567  {
5568  SCIP_CALL( SCIPheurInitsol(set->heurs[i], set) );
5569  }
5570 
5571  /* event handlers */
5572  for( i = 0; i < set->neventhdlrs; ++i )
5573  {
5574  SCIP_CALL( SCIPeventhdlrInitsol(set->eventhdlrs[i], set) );
5575  }
5576 
5577  /* node selectors */
5578  for( i = 0; i < set->nnodesels; ++i )
5579  {
5580  SCIP_CALL( SCIPnodeselInitsol(set->nodesels[i], set) );
5581  }
5582 
5583  /* branching rules */
5584  for( i = 0; i < set->nbranchrules; ++i )
5585  {
5586  SCIP_CALL( SCIPbranchruleInitsol(set->branchrules[i], set) );
5587  }
5588 
5589  /* display columns */
5590  for( i = 0; i < set->ndisps; ++i )
5591  {
5592  SCIP_CALL( SCIPdispInitsol(set->disps[i], set) );
5593  }
5594 
5595  /* statistics tables */
5596  for( i = 0; i < set->ntables; ++i )
5597  {
5598  SCIP_CALL( SCIPtableInitsol(set->tables[i], set) );
5599  }
5600 
5601  return SCIP_OKAY;
5602 }
5603 
5604 /** calls exitsol methods of all plugins */
5606  SCIP_SET* set, /**< global SCIP settings */
5607  BMS_BLKMEM* blkmem, /**< block memory */
5608  SCIP_STAT* stat, /**< dynamic problem statistics */
5609  SCIP_Bool restart /**< was this exit solve call triggered by a restart? */
5610  )
5611 {
5612  int i;
5613 
5614  assert(set != NULL);
5615 
5616  /* active variable pricers */
5617  SCIPsetSortPricers(set);
5618  for( i = 0; i < set->nactivepricers; ++i )
5619  {
5620  SCIP_CALL( SCIPpricerExitsol(set->pricers[i], set) );
5621  }
5622 
5623  /* Benders' decomposition */
5624  SCIPsetSortBenders(set);
5625  for( i = 0; i < set->nactivebenders; ++i )
5626  {
5627  SCIP_CALL( SCIPbendersExitsol(set->benders[i], set) );
5628  }
5629 
5630  /* constraint handlers */
5631  for( i = 0; i < set->nconshdlrs; ++i )
5632  {
5633  SCIP_CALL( SCIPconshdlrExitsol(set->conshdlrs[i], blkmem, set, stat, restart) );
5634  }
5635 
5636  /* conflict handlers */
5637  for( i = 0; i < set->nconflicthdlrs; ++i )
5638  {
5639  SCIP_CALL( SCIPconflicthdlrExitsol(set->conflicthdlrs[i], set) );
5640  }
5641 
5642  /* relaxators */
5643  for( i = 0; i < set->nrelaxs; ++i )
5644  {
5645  SCIP_CALL( SCIPrelaxExitsol(set->relaxs[i], set) );
5646  }
5647 
5648  /* separators */
5649  for( i = 0; i < set->nsepas; ++i )
5650  {
5651  SCIP_CALL( SCIPsepaExitsol(set->sepas[i], set) );
5652  }
5653 
5654  /* cut selectors */
5655  for( i = 0; i < set->ncutsels; ++i )
5656  {
5657  SCIP_CALL( SCIPcutselExitsol(set->cutsels[i], set) );
5658  }
5659 
5660  /* propagators */
5661  for( i = 0; i < set->nprops; ++i )
5662  {
5663  SCIP_CALL( SCIPpropExitsol(set->props[i], set, restart) );
5664  }
5665 
5666  /* primal heuristics */
5667  for( i = 0; i < set->nheurs; ++i )
5668  {
5669  SCIP_CALL( SCIPheurExitsol(set->heurs[i], set) );
5670  }
5671 
5672  /* event handlers */
5673  for( i = 0; i < set->neventhdlrs; ++i )
5674  {
5675  SCIP_CALL( SCIPeventhdlrExitsol(set->eventhdlrs[i], set) );
5676  }
5677 
5678  /* node selectors */
5679  for( i = 0; i < set->nnodesels; ++i )
5680  {
5681  SCIP_CALL( SCIPnodeselExitsol(set->nodesels[i], set) );
5682  }
5683 
5684  /* branching rules */
5685  for( i = 0; i < set->nbranchrules; ++i )
5686  {
5687  SCIP_CALL( SCIPbranchruleExitsol(set->branchrules[i], set) );
5688  }
5689 
5690  /* display columns */
5691  for( i = 0; i < set->ndisps; ++i )
5692  {
5693  SCIP_CALL( SCIPdispExitsol(set->disps[i], set) );
5694  }
5695 
5696  /* statistics tables */
5697  for( i = 0; i < set->ntables; ++i )
5698  {
5699  SCIP_CALL( SCIPtableExitsol(set->tables[i], set) );
5700  }
5701 
5702  return SCIP_OKAY;
5703 }
5704 
5705 /** calculate memory size for dynamically allocated arrays */
5707  SCIP_SET* set, /**< global SCIP settings */
5708  int num /**< minimum number of entries to store */
5709  )
5710 {
5711  return calcGrowSize(set->mem_arraygrowinit, set->mem_arraygrowfac, num);
5712 }
5713 
5714 /** calculate memory size for tree array */
5716  SCIP_SET* set, /**< global SCIP settings */
5717  int num /**< minimum number of entries to store */
5718  )
5719 {
5720  return calcGrowSize(set->mem_treegrowinit, set->mem_treegrowfac, num);
5721 }
5722 
5723 /** calculate memory size for path array */
5725  SCIP_SET* set, /**< global SCIP settings */
5726  int num /**< minimum number of entries to store */
5727  )
5728 {
5729  return calcGrowSize(set->mem_pathgrowinit, set->mem_pathgrowfac, num);
5730 }
5731 
5732 /** sets verbosity level for message output */
5734  SCIP_SET* set, /**< global SCIP settings */
5735  SCIP_VERBLEVEL verblevel /**< verbosity level for message output */
5736  )
5737 {
5738  assert(set != NULL);
5739 
5740  if( verblevel > SCIP_VERBLEVEL_FULL )
5741  {
5742  SCIPerrorMessage("invalid verbosity level <%d>, maximum is <%d>\n", verblevel, SCIP_VERBLEVEL_FULL);
5743  return SCIP_INVALIDCALL;
5744  }
5745 
5746  set->disp_verblevel = verblevel;
5747 
5748  return SCIP_OKAY;
5749 }
5750 
5751 /** sets feasibility tolerance */
5753  SCIP_SET* set, /**< global SCIP settings */
5754  SCIP_LP* lp, /**< LP data, or NULL */
5755  SCIP_Real feastol /**< new feasibility tolerance */
5756  )
5757 {
5758  assert(set != NULL);
5759 
5760  set->num_feastol = feastol;
5761 
5762  /* the feasibility tolerance of the LP solver should never be larger than
5763  * numerics/lpfeastolfactor times SCIP's feasibility tolerance
5764  * if necessary, reset LP feastol
5765  */
5766  if( lp != NULL && SCIPlpGetFeastol(lp) > set->num_lpfeastolfactor * SCIPsetFeastol(set) )
5767  SCIPlpResetFeastol(lp, set);
5768 
5769  return SCIP_OKAY;
5770 }
5771 
5772 /** sets feasibility tolerance for reduced costs in LP solution */
5774  SCIP_SET* set, /**< global SCIP settings */
5775  SCIP_Real dualfeastol /**< new reduced costs feasibility tolerance */
5776  )
5777 {
5778  assert(set != NULL);
5779 
5780  set->num_dualfeastol = dualfeastol;
5781 
5782  return SCIP_OKAY;
5783 }
5784 
5785 /** sets LP convergence tolerance used in barrier algorithm */
5787  SCIP_SET* set, /**< global SCIP settings */
5788  SCIP_Real barrierconvtol /**< new convergence tolerance used in barrier algorithm */
5789  )
5790 {
5791  assert(set != NULL);
5792 
5793  set->num_barrierconvtol = barrierconvtol;
5795  return SCIP_OKAY;
5796 }
5797 
5798 /** sets primal feasibility tolerance for relaxations (relaxfeastol)
5799  *
5800  * @note Set to SCIP_INVALID to apply relaxation-specific feasibility tolerance only.
5801  *
5802  * @return Previous value of relaxfeastol.
5803  */
5805  SCIP_SET* set, /**< global SCIP settings */
5806  SCIP_Real relaxfeastol /**< new primal feasibility tolerance for relaxations, or SCIP_INVALID */
5807  )
5808 {
5809  SCIP_Real oldval;
5810 
5811  assert(set != NULL);
5812  assert(relaxfeastol >= 0.0);
5813 
5814  oldval = set->num_relaxfeastol;
5815  set->num_relaxfeastol = relaxfeastol;
5816 
5817  return oldval;
5818 }
5819 
5820 /** marks that some limit parameter was changed */
5822  SCIP_SET* set /**< global SCIP settings */
5823  )
5824 {
5825  set->limitchanged = TRUE;
5826 
5827  set->istimelimitfinite = (set->limit_time < SCIP_DEFAULT_LIMIT_TIME);
5828 }
5829 
5830 /** returns the maximal number of variables priced into the LP per round */
5832  SCIP_SET* set, /**< global SCIP settings */
5833  SCIP_Bool root /**< are we at the root node? */
5834  )
5835 {
5836  assert(set != NULL);
5837 
5838  if( root )
5839  return set->price_maxvarsroot;
5840  else
5841  return set->price_maxvars;
5842 }
5843 
5844 /** returns the maximal number of cuts separated per round */
5846  SCIP_SET* set, /**< global SCIP settings */
5847  SCIP_Bool root /**< are we at the root node? */
5848  )
5849 {
5850  assert(set != NULL);
5851 
5852  if( root )
5853  return set->sepa_maxcutsroot;
5854  else
5855  return set->sepa_maxcuts;
5856 }
5857 
5858 /** returns the maximal ratio between coefficients to ensure in rowprep cleanup */
5860  SCIP_SET* set /**< global SCIP settings */
5861  )
5862 {
5863  SCIP_Real maxcoefrange;
5864 
5865  maxcoefrange = set->sepa_maxcoefratiofacrowprep / set->num_feastol;
5866  if( maxcoefrange < 1.0 )
5867  maxcoefrange = 1.0;
5868 
5869  return maxcoefrange;
5870 }
5871 
5872 /** returns user defined objective value (in original space) for reference purposes */
5874  SCIP_SET* set /**< global SCIP settings */
5875  )
5876 {
5877  assert(NULL != set);
5878 
5879  return set->misc_referencevalue;
5880 }
5881 
5882 
5883 /** returns debug solution data */
5885  SCIP_SET* set /**< global SCIP settings */
5886  )
5887 {
5888  assert(set != NULL);
5889 
5890  return set->debugsoldata;
5891 }
5892 
5893 
5894 /*
5895  * simple functions implemented as defines
5896  */
5897 
5898 /* In debug mode, the following methods are implemented as function calls to ensure
5899  * type validity.
5900  * In optimized mode, the methods are implemented as defines to improve performance.
5901  * However, we want to have them in the library anyways, so we have to undef the defines.
5902  */
5903 
5904 #undef SCIPsetInfinity
5905 #undef SCIPsetEpsilon
5906 #undef SCIPsetSumepsilon
5907 #undef SCIPsetFeastol
5908 #undef SCIPsetDualfeastol
5909 #undef SCIPsetBarrierconvtol
5910 #undef SCIPsetPseudocosteps
5911 #undef SCIPsetPseudocostdelta
5912 #undef SCIPsetCutoffbounddelta
5913 #undef SCIPsetLPFeastolFactor
5914 #undef SCIPsetRelaxfeastol
5915 #undef SCIPsetRecompfac
5916 #undef SCIPsetIsEQ
5917 #undef SCIPsetIsLT
5918 #undef SCIPsetIsLE
5919 #undef SCIPsetIsGT
5920 #undef SCIPsetIsGE
5921 #undef SCIPsetIsInfinity
5922 #undef SCIPsetIsZero
5923 #undef SCIPsetIsPositive
5924 #undef SCIPsetIsNegative
5925 #undef SCIPsetIsIntegral
5926 #undef SCIPsetIsScalingIntegral
5927 #undef SCIPsetIsFracIntegral
5928 #undef SCIPsetFloor
5929 #undef SCIPsetCeil
5930 #undef SCIPsetRound
5931 #undef SCIPsetFrac
5932 #undef SCIPsetIsSumEQ
5933 #undef SCIPsetIsSumLT
5934 #undef SCIPsetIsSumLE
5935 #undef SCIPsetIsSumGT
5936 #undef SCIPsetIsSumGE
5937 #undef SCIPsetIsSumZero
5938 #undef SCIPsetIsSumPositive
5939 #undef SCIPsetIsSumNegative
5940 #undef SCIPsetSumFloor
5941 #undef SCIPsetSumCeil
5942 #undef SCIPsetSumRound
5943 #undef SCIPsetSumFrac
5944 #undef SCIPsetIsFeasEQ
5945 #undef SCIPsetIsFeasLT
5946 #undef SCIPsetIsFeasLE
5947 #undef SCIPsetIsFeasGT
5948 #undef SCIPsetIsFeasGE
5949 #undef SCIPsetIsFeasZero
5950 #undef SCIPsetIsFeasPositive
5951 #undef SCIPsetIsFeasNegative
5952 #undef SCIPsetIsFeasIntegral
5953 #undef SCIPsetIsFeasFracIntegral
5954 #undef SCIPsetFeasFloor
5955 #undef SCIPsetFeasCeil
5956 #undef SCIPsetFeasRound
5957 #undef SCIPsetFeasFrac
5958 #undef SCIPsetIsDualfeasEQ
5959 #undef SCIPsetIsDualfeasLT
5960 #undef SCIPsetIsDualfeasLE
5961 #undef SCIPsetIsDualfeasGT
5962 #undef SCIPsetIsDualfeasGE
5963 #undef SCIPsetIsDualfeasZero
5964 #undef SCIPsetIsDualfeasPositive
5965 #undef SCIPsetIsDualfeasNegative
5966 #undef SCIPsetIsDualfeasIntegral
5967 #undef SCIPsetIsDualfeasFracIntegral
5968 #undef SCIPsetDualfeasFloor
5969 #undef SCIPsetDualfeasCeil
5970 #undef SCIPsetDualfeasRound
5971 #undef SCIPsetDualfeasFrac
5972 #undef SCIPsetIsLbBetter
5973 #undef SCIPsetIsUbBetter
5974 #undef SCIPsetIsEfficacious
5975 #undef SCIPsetIsRelEQ
5976 #undef SCIPsetIsRelLT
5977 #undef SCIPsetIsRelLE
5978 #undef SCIPsetIsRelGT
5979 #undef SCIPsetIsRelGE
5980 #undef SCIPsetIsSumRelEQ
5981 #undef SCIPsetIsSumRelLT
5982 #undef SCIPsetIsSumRelLE
5983 #undef SCIPsetIsSumRelGT
5984 #undef SCIPsetIsSumRelGE
5985 #undef SCIPsetIsUpdateUnreliable
5986 #undef SCIPsetInitializeRandomSeed
5987 #undef SCIPsetIsHugeValue
5988 #undef SCIPsetGetHugeValue
5989 #undef SCIPsetGetSubscipsOff
5990 
5991 /** returns value treated as infinity */
5993  SCIP_SET* set /**< global SCIP settings */
5994  )
5995 {
5996  assert(set != NULL);
5997 
5998  return set->num_infinity;
5999 }
6000 
6001 /** returns the minimum value that is regarded as huge and should be handled separately (e.g., in activity
6002  * computation)
6003  */
6005  SCIP_SET* set /**< global SCIP settings */
6006  )
6007 {
6008  assert(set != NULL);
6009 
6010  return set->num_hugeval;
6011 }
6012 
6013 /** returns value treated as zero */
6015  SCIP_SET* set /**< global SCIP settings */
6016  )
6017 {
6018  assert(set != NULL);
6019 
6020  return set->num_epsilon;
6021 }
6022 
6023 /** returns value treated as zero for sums of floating point values */
6025  SCIP_SET* set /**< global SCIP settings */
6026  )
6027 {
6028  assert(set != NULL);
6029 
6030  return set->num_sumepsilon;
6031 }
6032 
6033 /** returns feasibility tolerance for constraints */
6035  SCIP_SET* set /**< global SCIP settings */
6036  )
6037 {
6038  assert(set != NULL);
6039 
6040  return set->num_feastol;
6041 }
6042 
6043 /** returns feasibility tolerance for reduced costs */
6045  SCIP_SET* set /**< global SCIP settings */
6046  )
6047 {
6048  assert(set != NULL);
6049 
6050  return set->num_dualfeastol;
6051 }
6052 
6053 /** returns factor w.r.t. primal feasibility tolerance that determines default (and maximal) feasibility tolerance */
6055  SCIP_SET* set /**< global SCIP settings */
6056  )
6057 {
6058  return set->num_lpfeastolfactor;
6059 }
6060 
6061 /** returns convergence tolerance used in barrier algorithm */
6063  SCIP_SET* set /**< global SCIP settings */
6064  )
6065 {
6066  assert(set != NULL);
6067 
6068  return set->num_barrierconvtol;
6069 }
6070 
6071 /** returns minimal variable distance value to use for pseudo cost updates */
6073  SCIP_SET* set /**< global SCIP settings */
6074  )
6075 {
6076  assert(set != NULL);
6077 
6078  return set->num_pseudocosteps;
6079 }
6080 
6081 /** returns minimal minimal objective distance value to use for pseudo cost updates */
6083  SCIP_SET* set /**< global SCIP settings */
6084  )
6085 {
6086  assert(set != NULL);
6087 
6088  return set->num_pseudocostdelta;
6089 }
6090 
6091 /** return the delta to use for computing the cutoff bound for integral objectives */
6093  SCIP_SET* set /**< global SCIP settings */
6094  )
6095 {
6096  SCIP_Real feastol;
6097 
6098  assert(set != NULL);
6099 
6100  feastol = SCIPsetFeastol(set);
6101 
6102  return MIN(100.0 * feastol, 0.0001);
6104 
6105 /** return the primal feasibility tolerance for relaxations */
6107  SCIP_SET* set /**< global SCIP settings */
6108  )
6109 {
6110  assert(set != NULL);
6111 
6112  return set->num_relaxfeastol;
6114 
6115 /** returns minimal decrease factor that causes the recomputation of a value
6116  * (e.g., pseudo objective) instead of an update */
6118  SCIP_SET* set /**< global SCIP settings */
6119  )
6120 {
6121  assert(set != NULL);
6122 
6123  return set->num_recompfac;
6124 }
6125 
6126 /** checks, if value is (positive) infinite */
6128  SCIP_SET* set, /**< global SCIP settings */
6129  SCIP_Real val /**< value to be compared against infinity */
6130  )
6131 {
6132  assert(set != NULL);
6134  return (val >= set->num_infinity);
6135 }
6136 
6137 /** checks, if value is huge and should be handled separately (e.g., in activity computation) */
6139  SCIP_SET* set, /**< global SCIP settings */
6140  SCIP_Real val /**< value to be checked whether it is huge */
6141  )
6142 {
6143  assert(set != NULL);
6144 
6145  return (val >= set->num_hugeval);
6146 }
6147 
6148 /** checks, if values are in range of epsilon */
6150  SCIP_SET* set, /**< global SCIP settings */
6151  SCIP_Real val1, /**< first value to be compared */
6152  SCIP_Real val2 /**< second value to be compared */
6153  )
6154 {
6155  assert(set != NULL);
6156 
6157  /* avoid to compare two different infinities; the reason for that is
6158  * that such a comparison can lead to unexpected results */
6159  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6160  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6161  || val1 == val2 ); /*lint !e777*/
6162 
6163  return EPSEQ(val1, val2, set->num_epsilon);
6164 }
6165 
6166 /** checks, if val1 is (more than epsilon) lower than val2 */
6168  SCIP_SET* set, /**< global SCIP settings */
6169  SCIP_Real val1, /**< first value to be compared */
6170  SCIP_Real val2 /**< second value to be compared */
6171  )
6172 {
6173  assert(set != NULL);
6174 
6175  /* avoid to compare two different infinities; the reason for that is
6176  * that such a comparison can lead to unexpected results */
6177  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6178  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6179  || val1 == val2 ); /*lint !e777*/
6180 
6181  return EPSLT(val1, val2, set->num_epsilon);
6182 }
6183 
6184 /** checks, if val1 is not (more than epsilon) greater than val2 */
6186  SCIP_SET* set, /**< global SCIP settings */
6187  SCIP_Real val1, /**< first value to be compared */
6188  SCIP_Real val2 /**< second value to be compared */
6189  )
6190 {
6191  assert(set != NULL);
6192 
6193  /* avoid to compare two different infinities; the reason for that is
6194  * that such a comparison can lead to unexpected results */
6195  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6196  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6197  || val1 == val2 ); /*lint !e777*/
6198 
6199  return EPSLE(val1, val2, set->num_epsilon);
6200 }
6201 
6202 /** checks, if val1 is (more than epsilon) greater than val2 */
6204  SCIP_SET* set, /**< global SCIP settings */
6205  SCIP_Real val1, /**< first value to be compared */
6206  SCIP_Real val2 /**< second value to be compared */
6207  )
6208 {
6209  assert(set != NULL);
6210 
6211  /* avoid to compare two different infinities; the reason for that is
6212  * that such a comparison can lead to unexpected results */
6213  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6214  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6215  || val1 == val2 ); /*lint !e777*/
6216 
6217  return EPSGT(val1, val2, set->num_epsilon);
6218 }
6219 
6220 /** checks, if val1 is not (more than epsilon) lower than val2 */
6222  SCIP_SET* set, /**< global SCIP settings */
6223  SCIP_Real val1, /**< first value to be compared */
6224  SCIP_Real val2 /**< second value to be compared */
6225  )
6226 {
6227  assert(set != NULL);
6229  /* avoid to compare two different infinities; the reason for that is
6230  * that such a comparison can lead to unexpected results */
6231  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6232  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6233  || val1 == val2 ); /*lint !e777*/
6234 
6235  return EPSGE(val1, val2, set->num_epsilon);
6236 }
6237 
6238 /** checks, if value is in range epsilon of 0.0 */
6240  SCIP_SET* set, /**< global SCIP settings */
6241  SCIP_Real val /**< value to process */
6242  )
6243 {
6244  assert(set != NULL);
6245 
6246  return EPSZ(val, set->num_epsilon);
6247 }
6248 
6249 /** checks, if value is greater than epsilon */
6251  SCIP_SET* set, /**< global SCIP settings */
6252  SCIP_Real val /**< value to process */
6253  )
6254 {
6255  assert(set != NULL);
6256 
6257  return EPSP(val, set->num_epsilon);
6258 }
6259 
6260 /** checks, if value is lower than -epsilon */
6262  SCIP_SET* set, /**< global SCIP settings */
6263  SCIP_Real val /**< value to process */
6264  )
6265 {
6266  assert(set != NULL);
6267 
6268  return EPSN(val, set->num_epsilon);
6269 }
6270 
6271 /** checks, if value is integral within epsilon */
6273  SCIP_SET* set, /**< global SCIP settings */
6274  SCIP_Real val /**< value to process */
6275  )
6276 {
6277  assert(set != NULL);
6278 
6279  return EPSISINT(val, set->num_epsilon);
6280 }
6281 
6282 /** checks whether the product val * scalar is integral in epsilon scaled by scalar */
6284  SCIP_SET* set, /**< global SCIP settings */
6285  SCIP_Real val, /**< unscaled value to check for scaled integrality */
6286  SCIP_Real scalar /**< value to scale val with for checking for integrality */
6287  )
6288 {
6289  SCIP_Real scaledeps;
6290 
6291  assert(set != NULL);
6292 
6293  scaledeps = REALABS(scalar);
6294  scaledeps = MAX(scaledeps, 1.0);
6295  scaledeps *= set->num_epsilon;
6296 
6297  return EPSISINT(scalar*val, scaledeps);
6298 }
6299 
6300 /** checks, if given fractional part is smaller than epsilon */
6302  SCIP_SET* set, /**< global SCIP settings */
6303  SCIP_Real val /**< value to process */
6304  )
6305 {
6306  assert(set != NULL);
6307  assert(SCIPsetIsGE(set, val, -set->num_epsilon));
6308  assert(SCIPsetIsLE(set, val, 1.0+set->num_epsilon));
6309 
6310  return (val <= set->num_epsilon);
6311 }
6312 
6313 /** rounds value + feasibility tolerance down to the next integer in epsilon tolerance */
6315  SCIP_SET* set, /**< global SCIP settings */
6316  SCIP_Real val /**< value to process */
6317  )
6319  assert(set != NULL);
6320 
6321  return EPSFLOOR(val, set->num_epsilon);
6322 }
6323 
6324 /** rounds value - feasibility tolerance up to the next integer in epsilon tolerance */
6326  SCIP_SET* set, /**< global SCIP settings */
6327  SCIP_Real val /**< value to process */
6328  )
6330  assert(set != NULL);
6331 
6332  return EPSCEIL(val, set->num_epsilon);
6333 }
6334 
6335 /** rounds value to the nearest integer in epsilon tolerance */
6337  SCIP_SET* set, /**< global SCIP settings */
6338  SCIP_Real val /**< value to process */
6339  )
6341  assert(set != NULL);
6342 
6343  return EPSROUND(val, set->num_epsilon);
6344 }
6345 
6346 /** returns fractional part of value, i.e. x - floor(x) in epsilon tolerance */
6348  SCIP_SET* set, /**< global SCIP settings */
6349  SCIP_Real val /**< value to return fractional part for */
6350  )
6352  assert(set != NULL);
6353 
6354  return EPSFRAC(val, set->num_epsilon);
6355 }
6356 
6357 /** checks, if values are in range of sumepsilon */
6359  SCIP_SET* set, /**< global SCIP settings */
6360  SCIP_Real val1, /**< first value to be compared */
6361  SCIP_Real val2 /**< second value to be compared */
6362  )
6363 {
6364  assert(set != NULL);
6365 
6366  /* avoid to compare two different infinities; the reason for that is
6367  * that such a comparison can lead to unexpected results */
6368  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6369  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6370  || val1 == val2 ); /*lint !e777*/
6371 
6372  return EPSEQ(val1, val2, set->num_sumepsilon);
6373 }
6374 
6375 /** checks, if val1 is (more than sumepsilon) lower than val2 */
6377  SCIP_SET* set, /**< global SCIP settings */
6378  SCIP_Real val1, /**< first value to be compared */
6379  SCIP_Real val2 /**< second value to be compared */
6380  )
6381 {
6382  assert(set != NULL);
6383 
6384  /* avoid to compare two different infinities; the reason for that is
6385  * that such a comparison can lead to unexpected results */
6386  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6387  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6388  || val1 == val2 ); /*lint !e777*/
6389 
6390  return EPSLT(val1, val2, set->num_sumepsilon);
6391 }
6392 
6393 /** checks, if val1 is not (more than sumepsilon) greater than val2 */
6395  SCIP_SET* set, /**< global SCIP settings */
6396  SCIP_Real val1, /**< first value to be compared */
6397  SCIP_Real val2 /**< second value to be compared */
6398  )
6399 {
6400  assert(set != NULL);
6401 
6402  /* avoid to compare two different infinities; the reason for that is
6403  * that such a comparison can lead to unexpected results */
6404  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6405  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6406  || val1 == val2 ); /*lint !e777*/
6407 
6408  return EPSLE(val1, val2, set->num_sumepsilon);
6409 }
6410 
6411 /** checks, if val1 is (more than sumepsilon) greater than val2 */
6413  SCIP_SET* set, /**< global SCIP settings */
6414  SCIP_Real val1, /**< first value to be compared */
6415  SCIP_Real val2 /**< second value to be compared */
6416  )
6417 {
6418  assert(set != NULL);
6419 
6420  /* avoid to compare two different infinities; the reason for that is
6421  * that such a comparison can lead to unexpected results */
6422  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6423  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6424  || val1 == val2 ); /*lint !e777*/
6425 
6426  return EPSGT(val1, val2, set->num_sumepsilon);
6427 }
6428 
6429 /** checks, if val1 is not (more than sumepsilon) lower than val2 */
6431  SCIP_SET* set, /**< global SCIP settings */
6432  SCIP_Real val1, /**< first value to be compared */
6433  SCIP_Real val2 /**< second value to be compared */
6434  )
6435 {
6436  assert(set != NULL);
6438  /* avoid to compare two different infinities; the reason for that is
6439  * that such a comparison can lead to unexpected results */
6440  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6441  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6442  || val1 == val2 ); /*lint !e777*/
6443 
6444  return EPSGE(val1, val2, set->num_sumepsilon);
6445 }
6446 
6447 /** checks, if value is in range sumepsilon of 0.0 */
6449  SCIP_SET* set, /**< global SCIP settings */
6450  SCIP_Real val /**< value to process */
6451  )
6452 {
6453  assert(set != NULL);
6454 
6455  return EPSZ(val, set->num_sumepsilon);
6456 }
6457 
6458 /** checks, if value is greater than sumepsilon */
6460  SCIP_SET* set, /**< global SCIP settings */
6461  SCIP_Real val /**< value to process */
6462  )
6463 {
6464  assert(set != NULL);
6465 
6466  return EPSP(val, set->num_sumepsilon);
6467 }
6468 
6469 /** checks, if value is lower than -sumepsilon */
6471  SCIP_SET* set, /**< global SCIP settings */
6472  SCIP_Real val /**< value to process */
6473  )
6474 {
6475  assert(set != NULL);
6476 
6477  return EPSN(val, set->num_sumepsilon);
6478 }
6479 
6480 /** rounds value + sumepsilon tolerance down to the next integer */
6482  SCIP_SET* set, /**< global SCIP settings */
6483  SCIP_Real val /**< value to process */
6484  )
6485 {
6486  assert(set != NULL);
6487 
6488  return EPSFLOOR(val, set->num_sumepsilon);
6489 }
6490 
6491 /** rounds value - sumepsilon tolerance up to the next integer */
6493  SCIP_SET* set, /**< global SCIP settings */
6494  SCIP_Real val /**< value to process */
6495  )
6496 {
6497  assert(set != NULL);
6498 
6499  return EPSCEIL(val, set->num_sumepsilon);
6500 }
6501 
6502 /** rounds value to the nearest integer in sumepsilon tolerance */
6504  SCIP_SET* set, /**< global SCIP settings */
6505  SCIP_Real val /**< value to process */
6506  )
6507 {
6508  assert(set != NULL);
6510  return EPSROUND(val, set->num_sumepsilon);
6511 }
6512 
6513 /** returns fractional part of value, i.e. x - floor(x) in sumepsilon tolerance */
6515  SCIP_SET* set, /**< global SCIP settings */
6516  SCIP_Real val /**< value to process */
6517  )
6518 {
6519  assert(set != NULL);
6520 
6521  return EPSFRAC(val, set->num_sumepsilon);
6522 }
6523 
6524 /** checks, if relative difference of values is in range of feastol */
6526  SCIP_SET* set, /**< global SCIP settings */
6527  SCIP_Real val1, /**< first value to be compared */
6528  SCIP_Real val2 /**< second value to be compared */
6529  )
6530 {
6531  SCIP_Real diff;
6532 
6533  assert(set != NULL);
6534 
6535  /* avoid to compare two different infinities; the reason for that is
6536  * that such a comparison can lead to unexpected results */
6537  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6538  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6539  || val1 == val2 ); /*lint !e777*/
6540 
6541  diff = SCIPrelDiff(val1, val2);
6542 
6543  return EPSZ(diff, set->num_feastol);
6544 }
6545 
6546 /** checks, if relative difference of val1 and val2 is lower than feastol */
6548  SCIP_SET* set, /**< global SCIP settings */
6549  SCIP_Real val1, /**< first value to be compared */
6550  SCIP_Real val2 /**< second value to be compared */
6551  )
6552 {
6553  SCIP_Real diff;
6554 
6555  assert(set != NULL);
6556 
6557  /* avoid to compare two different infinities; the reason for that is
6558  * that such a comparison can lead to unexpected results */
6559  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6560  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6561  || val1 == val2 ); /*lint !e777*/
6562 
6563  diff = SCIPrelDiff(val1, val2);
6564 
6565  return EPSN(diff, set->num_feastol);
6566 }
6567 
6568 /** checks, if relative difference of val1 and val2 is not greater than feastol */
6570  SCIP_SET* set, /**< global SCIP settings */
6571  SCIP_Real val1, /**< first value to be compared */
6572  SCIP_Real val2 /**< second value to be compared */
6573  )
6574 {
6575  SCIP_Real diff;
6576 
6577  assert(set != NULL);
6578 
6579  /* avoid to compare two different infinities; the reason for that is
6580  * that such a comparison can lead to unexpected results */
6581  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6582  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6583  || val1 == val2 ); /*lint !e777*/
6584 
6585  diff = SCIPrelDiff(val1, val2);
6586 
6587  return !EPSP(diff, set->num_feastol);
6588 }
6589 
6590 /** checks, if relative difference of val1 and val2 is greater than feastol */
6592  SCIP_SET* set, /**< global SCIP settings */
6593  SCIP_Real val1, /**< first value to be compared */
6594  SCIP_Real val2 /**< second value to be compared */
6595  )
6596 {
6597  SCIP_Real diff;
6598 
6599  assert(set != NULL);
6600 
6601  /* avoid to compare two different infinities; the reason for that is
6602  * that such a comparison can lead to unexpected results */
6603  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6604  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6605  || val1 == val2 ); /*lint !e777*/
6606 
6607  diff = SCIPrelDiff(val1, val2);
6608 
6609  return EPSP(diff, set->num_feastol);
6610 }
6611 
6612 /** checks, if relative difference of val1 and val2 is not lower than -feastol */
6614  SCIP_SET* set, /**< global SCIP settings */
6615  SCIP_Real val1, /**< first value to be compared */
6616  SCIP_Real val2 /**< second value to be compared */
6617  )
6618 {
6619  SCIP_Real diff;
6620 
6621  assert(set != NULL);
6622 
6623  /* avoid to compare two different infinities; the reason for that is
6624  * that such a comparison can lead to unexpected results */
6625  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6626  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6627  || val1 == val2 ); /*lint !e777*/
6628 
6629  diff = SCIPrelDiff(val1, val2);
6630 
6631  return !EPSN(diff, set->num_feastol);
6632 }
6633 
6634 /** checks, if value is in range feasibility tolerance of 0.0 */
6636  SCIP_SET* set, /**< global SCIP settings */
6637  SCIP_Real val /**< value to process */
6638  )
6639 {
6640  assert(set != NULL);
6641 
6642  return EPSZ(val, set->num_feastol);
6643 }
6644 
6645 /** checks, if value is greater than feasibility tolerance */
6647  SCIP_SET* set, /**< global SCIP settings */
6648  SCIP_Real val /**< value to process */
6649  )
6650 {
6651  assert(set != NULL);
6652 
6653  return EPSP(val, set->num_feastol);
6654 }
6655 
6656 /** checks, if value is lower than -feasibility tolerance */
6658  SCIP_SET* set, /**< global SCIP settings */
6659  SCIP_Real val /**< value to process */
6660  )
6661 {
6662  assert(set != NULL);
6663 
6664  return EPSN(val, set->num_feastol);
6665 }
6666 
6667 /** checks, if value is integral within the feasibility bounds */
6669  SCIP_SET* set, /**< global SCIP settings */
6670  SCIP_Real val /**< value to process */
6671  )
6672 {
6673  assert(set != NULL);
6674 
6675  return EPSISINT(val, set->num_feastol);
6676 }
6677 
6678 /** checks, if given fractional part is smaller than feastol */
6680  SCIP_SET* set, /**< global SCIP settings */
6681  SCIP_Real val /**< value to process */
6682  )
6683 {
6684  assert(set != NULL);
6685  assert(SCIPsetIsGE(set, val, -2*set->num_feastol));
6686  assert(SCIPsetIsLE(set, val, 1.0+set->num_feastol));
6687 
6688  return (val <= set->num_feastol);
6689 }
6690 
6691 /** rounds value + feasibility tolerance down to the next integer in feasibility tolerance */
6693  SCIP_SET* set, /**< global SCIP settings */
6694  SCIP_Real val /**< value to process */
6695  )
6696 {
6697  assert(set != NULL);
6698 
6699  return EPSFLOOR(val, set->num_feastol);
6700 }
6701 
6702 /** rounds value - feasibility tolerance up to the next integer in feasibility tolerance */
6704  SCIP_SET* set, /**< global SCIP settings */
6705  SCIP_Real val /**< value to process */
6706  )
6707 {
6708  assert(set != NULL);
6709 
6710  return EPSCEIL(val, set->num_feastol);
6711 }
6712 
6713 /** rounds value to the nearest integer in feasibility tolerance */
6715  SCIP_SET* set, /**< global SCIP settings */
6716  SCIP_Real val /**< value to process */
6717  )
6718 {
6719  assert(set != NULL);
6720 
6721  return EPSROUND(val, set->num_feastol);
6722 }
6723 
6724 /** returns fractional part of value, i.e. x - floor(x) in feasibility tolerance */
6726  SCIP_SET* set, /**< global SCIP settings */
6727  SCIP_Real val /**< value to process */
6728  )
6729 {
6730  assert(set != NULL);
6731 
6732  return EPSFRAC(val, set->num_feastol);
6733 }
6734 
6735 /** checks, if relative difference of values is in range of dual feasibility tolerance */
6737  SCIP_SET* set, /**< global SCIP settings */
6738  SCIP_Real val1, /**< first value to be compared */
6739  SCIP_Real val2 /**< second value to be compared */
6740  )
6741 {
6742  SCIP_Real diff;
6743 
6744  assert(set != NULL);
6745 
6746  /* avoid to compare two different infinities; the reason for that is
6747  * that such a comparison can lead to unexpected results */
6748  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6749  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6750  || val1 == val2 ); /*lint !e777*/
6751 
6752  diff = SCIPrelDiff(val1, val2);
6753 
6754  return EPSZ(diff, set->num_dualfeastol);
6755 }
6756 
6757 /** checks, if relative difference of val1 and val2 is lower than dual feasibility tolerance */
6759  SCIP_SET* set, /**< global SCIP settings */
6760  SCIP_Real val1, /**< first value to be compared */
6761  SCIP_Real val2 /**< second value to be compared */
6762  )
6763 {
6764  SCIP_Real diff;
6765 
6766  assert(set != NULL);
6767 
6768  /* avoid to compare two different infinities; the reason for that is
6769  * that such a comparison can lead to unexpected results */
6770  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6771  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6772  || val1 == val2 ); /*lint !e777*/
6773 
6774  diff = SCIPrelDiff(val1, val2);
6775 
6776  return EPSN(diff, set->num_dualfeastol);
6777 }
6778 
6779 /** checks, if relative difference of val1 and val2 is not greater than dual feasibility tolerance */
6781  SCIP_SET* set, /**< global SCIP settings */
6782  SCIP_Real val1, /**< first value to be compared */
6783  SCIP_Real val2 /**< second value to be compared */
6784  )
6785 {
6786  SCIP_Real diff;
6787 
6788  assert(set != NULL);
6789 
6790  /* avoid to compare two different infinities; the reason for that is
6791  * that such a comparison can lead to unexpected results */
6792  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6793  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6794  || val1 == val2 ); /*lint !e777*/
6795 
6796  diff = SCIPrelDiff(val1, val2);
6797 
6798  return !EPSP(diff, set->num_dualfeastol);
6799 }
6800 
6801 /** checks, if relative difference of val1 and val2 is greater than dual feasibility tolerance */
6803  SCIP_SET* set, /**< global SCIP settings */
6804  SCIP_Real val1, /**< first value to be compared */
6805  SCIP_Real val2 /**< second value to be compared */
6806  )
6807 {
6808  SCIP_Real diff;
6809 
6810  assert(set != NULL);
6811 
6812  /* avoid to compare two different infinities; the reason for that is
6813  * that such a comparison can lead to unexpected results */
6814  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6815  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6816  || val1 == val2 ); /*lint !e777*/
6817 
6818  diff = SCIPrelDiff(val1, val2);
6819 
6820  return EPSP(diff, set->num_dualfeastol);
6821 }
6822 
6823 /** checks, if relative difference of val1 and val2 is not lower than -dual feasibility tolerance */
6825  SCIP_SET* set, /**< global SCIP settings */
6826  SCIP_Real val1, /**< first value to be compared */
6827  SCIP_Real val2 /**< second value to be compared */
6828  )
6829 {
6830  SCIP_Real diff;
6831 
6832  assert(set != NULL);
6833 
6834  /* avoid to compare two different infinities; the reason for that is
6835  * that such a comparison can lead to unexpected results */
6836  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
6837  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
6838  || val1 == val2 ); /*lint !e777*/
6839 
6840  diff = SCIPrelDiff(val1, val2);
6841 
6842  return !EPSN(diff, set->num_dualfeastol);
6843 }
6844 
6845 /** checks, if value is in range feasibility tolerance of 0.0 */
6847  SCIP_SET* set, /**< global SCIP settings */
6848  SCIP_Real val /**< value to process */
6849  )
6850 {
6851  assert(set != NULL);
6852 
6853  return EPSZ(val, set->num_dualfeastol);
6854 }
6855 
6856 /** checks, if value is greater than dual feasibility tolerance */
6858  SCIP_SET* set, /**< global SCIP settings */
6859  SCIP_Real val /**< value to process */
6860  )
6861 {
6862  assert(set != NULL);
6863 
6864  return EPSP(val, set->num_dualfeastol);
6865 }
6866 
6867 /** checks, if value is lower than -dual feasibility tolerance */
6869  SCIP_SET* set, /**< global SCIP settings */
6870  SCIP_Real val /**< value to process */
6871  )
6872 {
6873  assert(set != NULL);
6874 
6875  return EPSN(val, set->num_dualfeastol);
6876 }
6877 
6878 /** checks, if value is integral within the dual feasibility bounds */
6880  SCIP_SET* set, /**< global SCIP settings */
6881  SCIP_Real val /**< value to process */
6882  )
6883 {
6884  assert(set != NULL);
6885 
6886  return EPSISINT(val, set->num_dualfeastol);
6887 }
6888 
6889 /** checks, if given fractional part is smaller than dual feasibility tolerance */
6891  SCIP_SET* set, /**< global SCIP settings */
6892  SCIP_Real val /**< value to process */
6893  )
6894 {
6895  assert(set != NULL);
6896  assert(SCIPsetIsGE(set, val, -set->num_dualfeastol));
6897  assert(SCIPsetIsLE(set, val, 1.0+set->num_dualfeastol));
6898 
6899  return (val <= set->num_dualfeastol);
6900 }
6901 
6902 /** rounds value + dual feasibility tolerance down to the next integer */
6904  SCIP_SET* set, /**< global SCIP settings */
6905  SCIP_Real val /**< value to process */
6906  )
6907 {
6908  assert(set != NULL);
6909 
6910  return EPSFLOOR(val, set->num_dualfeastol);
6911 }
6912 
6913 /** rounds value - dual feasibility tolerance up to the next integer */
6915  SCIP_SET* set, /**< global SCIP settings */
6916  SCIP_Real val /**< value to process */
6917  )
6918 {
6919  assert(set != NULL);
6920 
6921  return EPSCEIL(val, set->num_dualfeastol);
6922 }
6923 
6924 /** rounds value to the nearest integer in dual feasibility tolerance */
6926  SCIP_SET* set, /**< global SCIP settings */
6927  SCIP_Real val /**< value to process */
6928  )
6929 {
6930  assert(set != NULL);
6931 
6932  return EPSROUND(val, set->num_dualfeastol);
6933 }
6934 
6935 /** returns fractional part of value, i.e. x - floor(x) in dual feasibility tolerance */
6937  SCIP_SET* set, /**< global SCIP settings */
6938  SCIP_Real val /**< value to process */
6939  )
6940 {
6941  assert(set != NULL);
6942 
6943  return EPSFRAC(val, set->num_dualfeastol);
6944 }
6945 
6946 /** checks, if the given new lower bound is at least min(oldub - oldlb, |oldlb|) times the bound
6947  * strengthening epsilon better than the old one or the change in the lower bound would fix the
6948  * sign of the variable
6949  */
6951  SCIP_SET* set, /**< global SCIP settings */
6952  SCIP_Real newlb, /**< new lower bound */
6953  SCIP_Real oldlb, /**< old lower bound */
6954  SCIP_Real oldub /**< old upper bound */
6955  )
6956 {
6957  assert(set != NULL);
6958  assert(SCIPsetIsLE(set, oldlb, oldub));
6959 
6960  /* if lower bound is moved to 0 or higher, always accept bound change */
6961  if( oldlb < 0.0 && newlb >= 0.0 )
6962  return TRUE;
6963 
6964  return EPSGT(newlb, oldlb, set->num_boundstreps * MAX(MIN(oldub - oldlb, REALABS(oldlb)), 1e-3)); /*lint !e666*/
6965 }
6966 
6967 /** checks, if the given new upper bound is at least min(oldub - oldlb, |oldub|) times the bound
6968  * strengthening epsilon better than the old one or the change in the upper bound would fix the
6969  * sign of the variable
6970  */
6972  SCIP_SET* set, /**< global SCIP settings */
6973  SCIP_Real newub, /**< new upper bound */
6974  SCIP_Real oldlb, /**< old lower bound */
6975  SCIP_Real oldub /**< old upper bound */
6976  )
6977 {
6978  assert(set != NULL);
6979  assert(SCIPsetIsLE(set, oldlb, oldub));
6980 
6981  /* if upper bound is moved to 0 or lower, always accept bound change */
6982  if( oldub > 0.0 && newub <= 0.0 )
6983  return TRUE;
6984 
6985  return EPSLT(newub, oldub, set->num_boundstreps * MAX(MIN(oldub - oldlb, REALABS(oldub)), 1e-3)); /*lint !e666*/
6986 }
6987 
6988 /** checks, if the given cut's efficacy is larger than the minimal cut efficacy */
6990  SCIP_SET* set, /**< global SCIP settings */
6991  SCIP_Bool root, /**< should the root's minimal cut efficacy be used? */
6992  SCIP_Real efficacy /**< efficacy of the cut */
6993  )
6994 {
6995  assert(set != NULL);
6996 
6997  if( root )
6998  return EPSP(efficacy, set->sepa_minefficacyroot);
6999  else
7000  return EPSP(efficacy, set->sepa_minefficacy);
7001 }
7002 
7003 /** checks, if relative difference of values is in range of epsilon */
7005  SCIP_SET* set, /**< global SCIP settings */
7006  SCIP_Real val1, /**< first value to be compared */
7007  SCIP_Real val2 /**< second value to be compared */
7008  )
7009 {
7010  SCIP_Real diff;
7011 
7012  assert(set != NULL);
7013 
7014  /* avoid to compare two different infinities; the reason for that is
7015  * that such a comparison can lead to unexpected results */
7016  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7017  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7018  || val1 == val2 ); /*lint !e777*/
7019 
7020  diff = SCIPrelDiff(val1, val2);
7021 
7022  return EPSZ(diff, set->num_epsilon);
7023 }
7024 
7025 /** checks, if relative difference of val1 and val2 is lower than epsilon */
7027  SCIP_SET* set, /**< global SCIP settings */
7028  SCIP_Real val1, /**< first value to be compared */
7029  SCIP_Real val2 /**< second value to be compared */
7030  )
7031 {
7032  SCIP_Real diff;
7033 
7034  assert(set != NULL);
7035 
7036  /* avoid to compare two different infinities; the reason for that is
7037  * that such a comparison can lead to unexpected results */
7038  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7039  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7040  || val1 == val2 ); /*lint !e777*/
7041 
7042  diff = SCIPrelDiff(val1, val2);
7043 
7044  return EPSN(diff, set->num_epsilon);
7045 }
7046 
7047 /** checks, if relative difference of val1 and val2 is not greater than epsilon */
7049  SCIP_SET* set, /**< global SCIP settings */
7050  SCIP_Real val1, /**< first value to be compared */
7051  SCIP_Real val2 /**< second value to be compared */
7052  )
7053 {
7054  SCIP_Real diff;
7055 
7056  assert(set != NULL);
7057 
7058  /* avoid to compare two different infinities; the reason for that is
7059  * that such a comparison can lead to unexpected results */
7060  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7061  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7062  || val1 == val2 ); /*lint !e777*/
7063 
7064  diff = SCIPrelDiff(val1, val2);
7065 
7066  return !EPSP(diff, set->num_epsilon);
7067 }
7069 /** checks, if relative difference of val1 and val2 is greater than epsilon */
7071  SCIP_SET* set, /**< global SCIP settings */
7072  SCIP_Real val1, /**< first value to be compared */
7073  SCIP_Real val2 /**< second value to be compared */
7074  )
7075 {
7076  SCIP_Real diff;
7077 
7078  assert(set != NULL);
7079 
7080  /* avoid to compare two different infinities; the reason for that is
7081  * that such a comparison can lead to unexpected results */
7082  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7083  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7084  || val1 == val2 ); /*lint !e777*/
7085 
7086  diff = SCIPrelDiff(val1, val2);
7087 
7088  return EPSP(diff, set->num_epsilon);
7089 }
7090 
7091 /** checks, if relative difference of val1 and val2 is not lower than -epsilon */
7093  SCIP_SET* set, /**< global SCIP settings */
7094  SCIP_Real val1, /**< first value to be compared */
7095  SCIP_Real val2 /**< second value to be compared */
7096  )
7097 {
7098  SCIP_Real diff;
7099 
7100  assert(set != NULL);
7101 
7102  /* avoid to compare two different infinities; the reason for that is
7103  * that such a comparison can lead to unexpected results */
7104  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7105  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7106  || val1 == val2 ); /*lint !e777*/
7107 
7108  diff = SCIPrelDiff(val1, val2);
7109 
7110  return !EPSN(diff, set->num_epsilon);
7111 }
7112 
7113 /** checks, if relative difference of values is in range of sumepsilon */
7115  SCIP_SET* set, /**< global SCIP settings */
7116  SCIP_Real val1, /**< first value to be compared */
7117  SCIP_Real val2 /**< second value to be compared */
7118  )
7119 {
7120  SCIP_Real diff;
7121 
7122  assert(set != NULL);
7123 
7124  /* avoid to compare two different infinities; the reason for that is
7125  * that such a comparison can lead to unexpected results */
7126  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7127  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7128  || val1 == val2 ); /*lint !e777*/
7129 
7130  diff = SCIPrelDiff(val1, val2);
7131 
7132  return EPSZ(diff, set->num_sumepsilon);
7133 }
7134 
7135 /** checks, if relative difference of val1 and val2 is lower than sumepsilon */
7137  SCIP_SET* set, /**< global SCIP settings */
7138  SCIP_Real val1, /**< first value to be compared */
7139  SCIP_Real val2 /**< second value to be compared */
7140  )
7141 {
7142  SCIP_Real diff;
7143 
7144  assert(set != NULL);
7145 
7146  /* avoid to compare two different infinities; the reason for that is
7147  * that such a comparison can lead to unexpected results */
7148  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7149  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7150  || val1 == val2 ); /*lint !e777*/
7151 
7152  diff = SCIPrelDiff(val1, val2);
7153 
7154  return EPSN(diff, set->num_sumepsilon);
7155 }
7156 
7157 /** checks, if relative difference of val1 and val2 is not greater than sumepsilon */
7159  SCIP_SET* set, /**< global SCIP settings */
7160  SCIP_Real val1, /**< first value to be compared */
7161  SCIP_Real val2 /**< second value to be compared */
7162  )
7163 {
7164  SCIP_Real diff;
7165 
7166  assert(set != NULL);
7167 
7168  /* avoid to compare two different infinities; the reason for that is
7169  * that such a comparison can lead to unexpected results */
7170  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7171  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7172  || val1 == val2 ); /*lint !e777*/
7173 
7174  diff = SCIPrelDiff(val1, val2);
7175 
7176  return !EPSP(diff, set->num_sumepsilon);
7177 }
7178 
7179 /** checks, if relative difference of val1 and val2 is greater than sumepsilon */
7181  SCIP_SET* set, /**< global SCIP settings */
7182  SCIP_Real val1, /**< first value to be compared */
7183  SCIP_Real val2 /**< second value to be compared */
7184  )
7185 {
7186  SCIP_Real diff;
7187 
7188  assert(set != NULL);
7189 
7190  /* avoid to compare two different infinities; the reason for that is
7191  * that such a comparison can lead to unexpected results */
7192  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7193  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7194  || val1 == val2 ); /*lint !e777*/
7195 
7196  diff = SCIPrelDiff(val1, val2);
7197 
7198  return EPSP(diff, set->num_sumepsilon);
7199 }
7200 
7201 /** checks, if relative difference of val1 and val2 is not lower than -sumepsilon */
7203  SCIP_SET* set, /**< global SCIP settings */
7204  SCIP_Real val1, /**< first value to be compared */
7205  SCIP_Real val2 /**< second value to be compared */
7206  )
7207 {
7208  SCIP_Real diff;
7209 
7210  assert(set != NULL);
7211 
7212  /* avoid to compare two different infinities; the reason for that is
7213  * that such a comparison can lead to unexpected results */
7214  assert( ((!SCIPsetIsInfinity(set, val1) || !SCIPsetIsInfinity(set, val2))
7215  && (!SCIPsetIsInfinity(set, -val1) || !SCIPsetIsInfinity(set, -val2)))
7216  || val1 == val2 ); /*lint !e777*/
7217 
7218  diff = SCIPrelDiff(val1, val2);
7219 
7220  return !EPSN(diff, set->num_sumepsilon);
7221 }
7222 
7223 /** returns the flag indicating whether sub-SCIPs that could cause recursion have been deactivated */
7225  SCIP_SET* set /**< global SCIP settings */
7226  )
7227 {
7228  assert(set != NULL);
7229 
7230  return set->subscipsoff;
7231 }
7232 
7233 /** Checks, if an iteratively updated value is reliable or should be recomputed from scratch.
7234  * This is useful, if the value, e.g., the activity of a linear constraint or the pseudo objective value, gets a high
7235  * absolute value during the optimization process which is later reduced significantly. In this case, the last digits
7236  * were canceled out when increasing the value and are random after decreasing it.
7237  * We dot not consider the cancellations which can occur during increasing the absolute value because they just cannot
7238  * be expressed using fixed precision floating point arithmetic, anymore.
7239  * The idea to get more reliable values is to always store the last reliable value, where increasing the absolute of
7240  * the value is viewed as preserving reliability. Then, after each update, the new absolute value can be compared
7241  * against the last reliable one with this method, checking whether it was decreased by a factor of at least
7242  * "lp/recompfac" and should be recomputed.
7243  */
7245  SCIP_SET* set, /**< global SCIP settings */
7246  SCIP_Real newvalue, /**< new value after update */
7247  SCIP_Real oldvalue /**< old value, i.e., last reliable value */
7248  )
7249 {
7250  SCIP_Real quotient;
7251 
7252  assert(set != NULL);
7253 
7254  quotient = ABS(oldvalue) / MAX(ABS(newvalue), set->num_epsilon);
7255 
7256  return quotient >= set->num_recompfac;
7257 }
7258 
7259 /** prints a debug message */
7261  SCIP_SET* set, /**< global SCIP settings */
7262  const char* sourcefile, /**< name of the source file that called the function */
7263  int sourceline, /**< line in the source file where the function was called */
7264  const char* formatstr, /**< format string like in printf() function */
7265  ... /**< format arguments line in printf() function */
7266  )
7267 {
7268  const char* filename;
7269  int subscipdepth = 0;
7270  SCIP* scip;
7271  va_list ap;
7272 
7273  assert( sourcefile != NULL );
7274  assert( set != NULL );
7275 
7276  scip = set->scip;
7277  assert( scip != NULL );
7278 
7279  /* strip directory from filename */
7280 #if defined(_WIN32) || defined(_WIN64)
7281  filename = strrchr(sourcefile, '\\');
7282 #else
7283  filename = strrchr(sourcefile, '/');
7284 #endif
7285  if ( filename == NULL )
7286  filename = sourcefile;
7287  else
7288  ++filename;
7289 
7290  if ( scip->stat != NULL )
7291  subscipdepth = scip->stat->subscipdepth;
7292 
7293  if ( subscipdepth > 0 )
7294  SCIPmessageFPrintInfo(scip->messagehdlr, NULL, "%d: [%s:%d] debug: ", subscipdepth, filename, sourceline);
7295  else
7296  SCIPmessageFPrintInfo(scip->messagehdlr, NULL, "[%s:%d] debug: ", filename, sourceline);
7297 
7298  va_start(ap, formatstr); /*lint !e838*/
7299  SCIPmessageVFPrintInfo(scip->messagehdlr, NULL, formatstr, ap);
7300  va_end(ap);
7301 }
7302 
7303 /** prints a debug message without precode */
7305  SCIP_SET* set, /**< global SCIP settings */
7306  const char* formatstr, /**< format string like in printf() function */
7307  ... /**< format arguments line in printf() function */
7308  )
7309 {
7310  va_list ap;
7311 
7312  assert( set != NULL );
7313  assert( set->scip != NULL );
7314 
7315  va_start(ap, formatstr); /*lint !e838*/
7316  SCIPmessageVFPrintInfo(set->scip->messagehdlr, NULL, formatstr, ap);
7317  va_end(ap);
7318 }
7319 
7320 /** modifies an initial seed value with the global shift of random seeds */
7321 unsigned int SCIPsetInitializeRandomSeed(
7322  SCIP_SET* set, /**< global SCIP settings */
7323  unsigned int initialseedvalue /**< initial seed value to be modified */
7324  )
7325 {
7326  assert(set != NULL);
7327 
7328  return (unsigned int)(initialseedvalue + (unsigned) set->random_randomseedshift);
7329 }
SCIP_RETCODE SCIPsetInitprePlugins(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat)
Definition: set.c:5499
SCIP_RETCODE SCIPsetIncludePresol(SCIP_SET *set, SCIP_PRESOL *presol)
Definition: set.c:4100
void SCIPpricerEnableOrDisableClocks(SCIP_PRICER *pricer, SCIP_Bool enable)
Definition: pricer.c:672
SCIP_Real SCIPsetFeasRound(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6793
internal methods for separators
SCIP_Bool SCIPsetIsUpdateUnreliable(SCIP_SET *set, SCIP_Real newvalue, SCIP_Real oldvalue)
Definition: set.c:7323
SCIP_RETCODE SCIPsetExitsolPlugins(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_Bool restart)
Definition: set.c:5684
SCIP_STAT * stat
Definition: struct_scip.h:70
void SCIPsetSortPropsName(SCIP_SET *set)
Definition: set.c:4456
#define SCIP_DEFAULT_DISP_LPINFO
Definition: set.c:195
SCIP_RETCODE SCIPenableReoptimization(SCIP *scip, SCIP_Bool enable)
Definition: scip_solve.c:3157
int ndisps
Definition: struct_set.h:135
SCIP_RETCODE SCIPsetSetEmphasis(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAMEMPHASIS paramemphasis, SCIP_Bool quiet)
Definition: set.c:3578
SCIP_RETCODE SCIPparamsetFix(SCIP_PARAMSET *paramset, const char *name, SCIP_Bool fixed)
Definition: paramset.c:1907
SCIP_RETCODE SCIPpricerInit(SCIP_PRICER *pricer, SCIP_SET *set)
Definition: pricer.c:225
#define SCIP_DEFAULT_BRANCH_FIRSTSBCHILD
Definition: set.c:87
#define SCIP_DEFAULT_PRESOL_MAXROUNDS
Definition: set.c:367
SCIP_Bool SCIPconflicthdlrIsInitialized(SCIP_CONFLICTHDLR *conflicthdlr)
Definition: conflict.c:807
SCIP_RETCODE SCIPreaderCopyInclude(SCIP_READER *reader, SCIP_SET *set)
Definition: reader.c:49
#define SCIP_DEFAULT_BRANCH_ROUNDSBSOL
Definition: set.c:89
SCIP_RETCODE SCIPpropExitpre(SCIP_PROP *prop, SCIP_SET *set)
Definition: prop.c:437
SCIP_RETCODE SCIPsetIncludeEventhdlr(SCIP_SET *set, SCIP_EVENTHDLR *eventhdlr)
Definition: set.c:4750
void SCIPlpResetFeastol(SCIP_LP *lp, SCIP_SET *set)
Definition: lp.c:10276
SCIP_RETCODE SCIPparamsetAddChar(SCIP_PARAMSET *paramset, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, char *valueptr, SCIP_Bool isadvanced, char defaultvalue, const char *allowedvalues, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: paramset.c:1607
SCIP_Bool SCIPsetIsInfinity(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6206
SCIP_Bool SCIPsetIsSumGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6509
SCIP_RETCODE SCIPpropInitsol(SCIP_PROP *prop, SCIP_SET *set)
Definition: prop.c:461
SCIP_RETCODE SCIPdispInit(SCIP_DISP *disp, SCIP_SET *set)
Definition: disp.c:205
const char * SCIPcutselGetName(SCIP_CUTSEL *cutsel)
Definition: cutsel.c:150
#define SCIP_DEFAULT_VISUAL_BAKFILENAME
Definition: set.c:568
#define SCIP_DEFAULT_LP_CLEANUPCOLS
Definition: set.c:259
internal methods for managing events
SCIP_RETCODE SCIPparamsetWrite(SCIP_PARAMSET *paramset, SCIP_MESSAGEHDLR *messagehdlr, const char *filename, SCIP_Bool comments, SCIP_Bool onlychanged)
Definition: paramset.c:2680
SCIP_READER ** readers
Definition: struct_set.h:70
SCIP_Real SCIPfeastol(SCIP *scip)
SCIP_CUTSEL ** cutsels
Definition: struct_set.h:80
#define SCIP_DEFAULT_BRANCH_DELAYPSCOST
Definition: set.c:82
SCIP_Bool SCIPbranchruleIsInitialized(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:2164
SCIP_Bool SCIPsetIsLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6264
SCIP_Bool SCIPsetIsFeasZero(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6714
#define SCIP_DEFAULT_MISC_SHOWDIVINGSTATS
Definition: set.c:341
void SCIPsepaEnableOrDisableClocks(SCIP_SEPA *sepa, SCIP_Bool enable)
Definition: sepa.c:819
#define SCIP_DEFAULT_LP_LEXDUALMAXROUNDS
Definition: set.c:274
int nnodesels
Definition: struct_set.h:131
SCIP_RETCODE SCIPcutselFree(SCIP_CUTSEL **cutsel, SCIP_SET *set)
Definition: cutsel.c:263
SCIP_RETCODE SCIPcutselExitsol(SCIP_CUTSEL *cutsel, SCIP_SET *set)
Definition: cutsel.c:385
int SCIPnodeselGetMemsavePriority(SCIP_NODESEL *nodesel)
Definition: nodesel.c:1087
#define SCIP_DEFAULT_PRESOL_DONOTAGGR
Definition: set.c:383
static int calcGrowSize(int initsize, SCIP_Real growfac, int num)
Definition: set.c:597
#define SCIP_DEFAULT_BRANCH_MIDPULLRELDOMTRIG
Definition: set.c:80
#define SCIP_DEFAULT_SEPA_MAXROUNDSROOTSUBRUN
Definition: set.c:505
const char * SCIPpricerGetName(SCIP_PRICER *pricer)
Definition: pricer.c:588
void SCIPnodeselEnableOrDisableClocks(SCIP_NODESEL *nodesel, SCIP_Bool enable)
Definition: nodesel.c:1210
#define SCIP_DEFAULT_CONF_CLEANBNDDEPEND
Definition: set.c:134
#define SCIP_DEFAULT_REOPT_ENABLE
Definition: set.c:436
SCIP_STAGE SCIPgetStage(SCIP *scip)
Definition: scip_general.c:356
SCIP_RETCODE SCIPsetIncludeConcsolver(SCIP_SET *set, SCIP_CONCSOLVER *concsolver)
Definition: set.c:4556
#define BMSfreeMemoryArrayNull(ptr)
Definition: memory.h:141
SCIP_RETCODE SCIPsetCopyPlugins(SCIP_SET *sourceset, SCIP_SET *targetset, SCIP_Bool copyreaders, SCIP_Bool copypricers, SCIP_Bool copyconshdlrs, SCIP_Bool copyconflicthdlrs, SCIP_Bool copypresolvers, SCIP_Bool copyrelaxators, SCIP_Bool copyseparators, SCIP_Bool copycutselectors, SCIP_Bool copypropagators, SCIP_Bool copyheuristics, SCIP_Bool copyeventhdlrs, SCIP_Bool copynodeselectors, SCIP_Bool copybranchrules, SCIP_Bool copydisplays, SCIP_Bool copydialogs, SCIP_Bool copytables, SCIP_Bool copyexprhdlrs, SCIP_Bool copynlpis, SCIP_Bool *allvalid)
Definition: set.c:927
SCIP_RETCODE SCIPchgBarrierconvtol(SCIP *scip, SCIP_Real barrierconvtol)
SCIP_RETCODE SCIPdispInitsol(SCIP_DISP *disp, SCIP_SET *set)
Definition: disp.c:253
SCIP_RETCODE SCIPpresolInit(SCIP_PRESOL *presol, SCIP_SET *set)
Definition: presol.c:230
#define SCIP_DEFAULT_MISC_USESMALLTABLES
Definition: set.c:310
#define SCIP_DEFAULT_CONF_USEINFLP
Definition: set.c:109
SCIP_RETCODE SCIPtableInitsol(SCIP_TABLE *table, SCIP_SET *set)
Definition: table.c:227
#define SCIP_DEFAULT_CONF_MAXLPLOOPS
Definition: set.c:102
SCIP_CONFLICTHDLR ** conflicthdlrs
Definition: struct_set.h:76
#define SCIP_DEFAULT_VISUAL_OBJEXTERN
Definition: set.c:572
#define SCIP_DEFAULT_MISC_REFERENCEVALUE
Definition: set.c:332
void SCIPsetPrintDebugMessage(SCIP_SET *set, const char *sourcefile, int sourceline, const char *formatstr,...)
Definition: set.c:7339
#define SCIP_DEFAULT_MISC_FINITESOLSTORE
Definition: set.c:328
SCIP_Bool SCIPsetIsSumZero(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6527
SCIP_RETCODE SCIPconshdlrExit(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2502
SCIP_NLPI * SCIPsetFindNlpi(SCIP_SET *set, const char *name)
Definition: set.c:5186
#define SCIP_DEFAULT_LIMIT_SOLUTIONS
Definition: set.c:221
SCIP_Real SCIPsetFeastol(SCIP_SET *set)
Definition: set.c:6113
#define SCIP_DEFAULT_CONCURRENT_MAXNSYNCDELAY
Definition: set.c:549
#define SCIP_DEFAULT_READ_DYNAMICCOLS
Definition: set.c:579
#define SCIP_DEFAULT_REOPT_SAVECONSPROP
Definition: set.c:461
SCIP_Bool SCIPsetIsDualfeasEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6815
#define SCIP_DEFAULT_MEM_TREEGROWINIT
Definition: set.c:301
SCIP_PRICER * SCIPsetFindPricer(SCIP_SET *set, const char *name)
Definition: set.c:3744
SCIP_TABLE * SCIPsetFindTable(SCIP_SET *set, const char *name)
Definition: set.c:5033
unsigned int SCIPsetInitializeRandomSeed(SCIP_SET *set, unsigned int initialseedvalue)
Definition: set.c:7400
SCIP_RETCODE SCIPdispAutoActivate(SCIP_SET *set)
Definition: disp.c:492
#define SCIP_DEFAULT_CONF_RESTARTNUM
Definition: set.c:159
#define SCIP_DEFAULT_LP_PRICING
Definition: set.c:243
SCIP_RETCODE SCIPpropCopyInclude(SCIP_PROP *prop, SCIP_SET *set)
Definition: prop.c:91
SCIP_RETCODE SCIPsepaCopyInclude(SCIP_SEPA *sepa, SCIP_SET *set)
Definition: sepa.c:70
#define SCIP_DEFAULT_CONF_REPROPAGATE
Definition: set.c:149
#define SCIP_DEFAULT_MISC_OUTPUTORIGSOL
Definition: set.c:329
SCIP_Real SCIPsetFloor(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6393
#define SCIP_DEFAULT_CONCURRENT_FREQFACTOR
Definition: set.c:544
SCIP_Real SCIPsetPseudocosteps(SCIP_SET *set)
Definition: set.c:6151
SCIP_Bool SCIPsetIsFeasEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6604
SCIP_RETCODE SCIPsetSetRealParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_Real value)
Definition: set.c:3422
SCIP_RETCODE SCIPrelaxInit(SCIP_RELAX *relax, SCIP_SET *set)
Definition: relax.c:222
#define SCIP_DEFAULT_CONCURRENT_NBESTSOLS
Definition: set.c:551
SCIP_RETCODE SCIPbranchruleExitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1501
SCIP_RETCODE SCIPnodeselExitsol(SCIP_NODESEL *nodesel, SCIP_SET *set)
Definition: nodesel.c:979
#define SCIP_DEFAULT_PRESOL_CLQTABLEFAC
Definition: set.c:369
#define SCIP_DEFAULT_MISC_RESETSTAT
Definition: set.c:312
SCIP_NODESEL ** nodesels
Definition: struct_set.h:86
#define infinity
Definition: gastrans.c:71
#define SCIP_DEFAULT_SEPA_MAXRUNS
Definition: set.c:502
#define SCIP_DEFAULT_LIMIT_TIME
Definition: set.c:211
#define SCIP_DEFAULT_HEUR_USEUCTSUBSCIP
Definition: set.c:201
#define SCIP_DEFAULT_LP_LEXDUALROOTONLY
Definition: set.c:273
SCIP_RETCODE SCIPpresolFree(SCIP_PRESOL **presol, SCIP_SET *set)
Definition: presol.c:203
const char * SCIPbendersGetName(SCIP_BENDERS *benders)
Definition: benders.c:5895
const char * SCIPexprhdlrGetName(SCIP_EXPRHDLR *exprhdlr)
Definition: expr.c:525
#define SCIP_DEFAULT_LP_MARKOWITZ
Definition: set.c:265
#define SCIP_DEFAULT_WRITE_GENNAMES_OFFSET
Definition: set.c:581
SCIP_Bool SCIPsetIsDualfeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6903
SCIP_RETCODE SCIPdispFree(SCIP_DISP **disp, SCIP_SET *set)
Definition: disp.c:179
SCIP_RETCODE SCIPeventhdlrExit(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
Definition: event.c:207
SCIP_RETCODE SCIPcomprInit(SCIP_COMPR *compr, SCIP_SET *set)
Definition: compr.c:221
#define SCIP_DEFAULT_PROP_MAXROUNDSROOT
Definition: set.c:473
#define SCIP_DEFAULT_LP_PRESOLVING
Definition: set.c:271
internal methods for clocks and timing issues
#define SCIP_DEFAULT_REOPT_SEPABESTSOL
Definition: set.c:438
SCIP_RETCODE SCIPparamsetSetToDefault(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *paramname)
Definition: paramset.c:2781
SCIP_Bool SCIPsetIsSumGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6491
#define SCIP_DEFAULT_REOPT_MAXDIFFOFNODES
Definition: set.c:425
SCIP_RETCODE SCIPsetCreate(SCIP_SET **set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP *scip)
Definition: set.c:1170
SCIP_RETCODE SCIPexprhdlrCopyInclude(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *targetset)
Definition: expr.c:829
SCIP_RETCODE SCIPsetIncludeRelax(SCIP_SET *set, SCIP_RELAX *relax)
Definition: set.c:4173
SCIP_Bool SCIPsetIsPositive(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6329
SCIP_EVENTHDLR * SCIPsetFindEventhdlr(SCIP_SET *set, const char *name)
Definition: set.c:4773
#define SCIP_DEFAULT_MEM_SAVEFAC
Definition: set.c:298
void SCIPnlpiSetPriority(SCIP_NLPI *nlpi, int priority)
Definition: nlpi.c:129
int nprops
Definition: struct_set.h:123
#define SCIP_DEFAULT_SEPA_CUTSELSUBSCIP
Definition: set.c:500
#define SCIP_DEFAULT_CONF_FULLSHORTENCONFLICT
Definition: set.c:165
struct SCIP_ParamData SCIP_PARAMDATA
Definition: type_paramset.h:78
#define SCIP_DEFAULT_CONCURRENT_COMMVARBNDS
Definition: set.c:535
#define SCIP_DEFAULT_LP_INITALGORITHM
Definition: set.c:237
#define SCIP_DEFAULT_CONS_AGELIMIT
Definition: set.c:180
#define SCIP_DEFAULT_PRESOL_ABORTFAC
Definition: set.c:364
void SCIPsetSortComprsName(SCIP_SET *set)
Definition: set.c:4735
SCIP_Bool SCIPsetIsSumRelGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7259
internal methods for NLP solver interfaces
#define SCIP_DEFAULT_SEPA_CUTAGELIMIT
Definition: set.c:517
#define SCIP_DEFAULT_DISP_RELEVANTSTATS
Definition: set.c:197
SCIP_RETCODE SCIPsetIncludeConshdlr(SCIP_SET *set, SCIP_CONSHDLR *conshdlr)
Definition: set.c:3867
#define SCIP_DEFAULT_LP_CHECKFARKAS
Definition: set.c:268
SCIP_RETCODE SCIPsetGetStringParam(SCIP_SET *set, const char *name, char **value)
Definition: set.c:3229
const char * SCIPbanditvtableGetName(SCIP_BANDITVTABLE *banditvtable)
Definition: bandit.c:273
#define SCIPdebugSolDataCreate(debugsoldata)
Definition: debug.h:260
void SCIPconcsolverTypeFree(SCIP_CONCSOLVERTYPE **concsolvertype)
Definition: concsolver.c:144
SCIP_RETCODE SCIPparamsetSetSeparating(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
Definition: paramset.c:4253
SCIP_RETCODE SCIPeventhdlrCopyInclude(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
Definition: event.c:51
SCIP_RETCODE SCIPsetIncludeBanditvtable(SCIP_SET *set, SCIP_BANDITVTABLE *banditvtable)
Definition: set.c:4471
SCIP_RETCODE SCIPsetResetParams(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
Definition: set.c:3555
SCIP_RETCODE SCIPdispExit(SCIP_DISP *disp, SCIP_SET *set)
Definition: disp.c:229
#define SCIP_DEFAULT_CONF_MAXSTORESIZE
Definition: set.c:130
const char * SCIPreaderGetName(SCIP_READER *reader)
Definition: reader.c:548
#define SCIP_DEFAULT_REOPT_REDUCETOFRONTIER
Definition: set.c:460
#define SCIP_DEFAULT_REOPT_MAXSAVEDNODES
Definition: set.c:424
SCIP_Bool SCIPsetIsScalingIntegral(SCIP_SET *set, SCIP_Real val, SCIP_Real scalar)
Definition: set.c:6362
#define SCIP_DEFAULT_LP_THREADS
Definition: set.c:281
SCIP_Real SCIPsetInfinity(SCIP_SET *set)
Definition: set.c:6071
internal methods for displaying statistics tables
#define SCIP_DEFAULT_LIMIT_ABSGAP
Definition: set.c:214
#define SCIP_DEFAULT_BRANCH_FORCEALL
Definition: set.c:84
SCIP_RETCODE SCIPtableFree(SCIP_TABLE **table, SCIP_SET *set)
Definition: table.c:154
SCIP_Bool SCIPpricerIsActive(SCIP_PRICER *pricer)
Definition: pricer.c:684
void SCIPsetSortConflicthdlrsName(SCIP_SET *set)
Definition: set.c:4085
SCIP_RETCODE SCIPsetIncludeDialog(SCIP_SET *set, SCIP_DIALOG *dialog)
Definition: set.c:5053
#define SCIP_DEFAULT_CONF_MAXCONSS
Definition: set.c:141
SCIP_RETCODE SCIPheurFree(SCIP_HEUR **heur, SCIP_SET *set, BMS_BLKMEM *blkmem)
Definition: heur.c:1016
void SCIPexprhdlrInit(SCIP_EXPRHDLR *exprhdlr, SCIP_SET *set)
Definition: expr.c:854
#define SCIP_DEFAULT_REOPT_USECUTS
Definition: set.c:467
SCIP_RETCODE SCIPpresolExit(SCIP_PRESOL *presol, SCIP_SET *set)
Definition: presol.c:289
enum SCIP_ClockType SCIP_CLOCKTYPE
Definition: type_clock.h:38
#define SCIP_DEFAULT_MISC_CATCHCTRLC
Definition: set.c:307
private functions to work with algebraic expressions
SCIP_Bool SCIPcomprIsInitialized(SCIP_COMPR *compr)
Definition: compr.c:521
void SCIPsetSortHeurs(SCIP_SET *set)
Definition: set.c:4646
#define FALSE
Definition: def.h:87
SCIP_SEPA ** sepas
Definition: struct_set.h:79
SCIP_RETCODE SCIPbendersExit(SCIP_BENDERS *benders, SCIP_SET *set)
Definition: benders.c:2211
#define EPSEQ(x, y, eps)
Definition: def.h:202
#define EPSISINT(x, eps)
Definition: def.h:214
#define SCIP_DEFAULT_MISC_CALCINTEGRAL
Definition: set.c:327
SCIP_RETCODE SCIPpricerInitsol(SCIP_PRICER *pricer, SCIP_SET *set)
Definition: pricer.c:296
SCIP_RETCODE SCIPbendersExitpre(SCIP_BENDERS *benders, SCIP_SET *set, SCIP_STAT *stat)
Definition: benders.c:2397
#define SCIP_DEFAULT_RECOMPFAC
Definition: def.h:193
#define SCIP_DEFAULT_CONF_MAXVARSFAC
Definition: set.c:100
#define SCIP_DEFAULT_CONF_PROOFSCOREFAC
Definition: set.c:155
SCIP_Real SCIPsetSetRelaxfeastol(SCIP_SET *set, SCIP_Real relaxfeastol)
Definition: set.c:5883
SCIP_Bool SCIPsetIsFeasIntegral(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6747
const char * SCIPeventhdlrGetName(SCIP_EVENTHDLR *eventhdlr)
Definition: event.c:315
internal methods for bandit algorithms
#define SCIP_MAXEPSILON
Definition: def.h:195
SCIP_NODESEL * SCIPsetGetNodesel(SCIP_SET *set, SCIP_STAT *stat)
Definition: set.c:4844
internal methods for cut selectors
SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)
Definition: misc.c:11063
SCIP_PROP * SCIPsetFindProp(SCIP_SET *set, const char *name)
Definition: set.c:4406
const char * SCIPtableGetName(SCIP_TABLE *table)
Definition: table.c:300
SCIP_RETCODE SCIPconshdlrInitsol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2671
#define SCIP_DEFAULT_MISC_USEVARTABLE
Definition: set.c:308
#define SCIP_DEFAULT_VISUAL_DISPLB
Definition: set.c:571
SCIP_RETCODE SCIPcomprFree(SCIP_COMPR **compr, SCIP_SET *set)
Definition: compr.c:194
SCIP_Bool SCIPsetIsZero(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6318
void SCIPbanditvtableFree(SCIP_BANDITVTABLE **banditvtable)
Definition: bandit.c:260
void SCIPsetSortCutsels(SCIP_SET *set)
Definition: set.c:4365
#define TRUE
Definition: def.h:86
const char * SCIPsepaGetName(SCIP_SEPA *sepa)
Definition: sepa.c:734
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
SCIP_PRESOL * SCIPsetFindPresol(SCIP_SET *set, const char *name)
Definition: set.c:4123
SCIP_RETCODE SCIPheurInitsol(SCIP_HEUR *heur, SCIP_SET *set)
Definition: heur.c:1135
SCIP_PARAM * SCIPparamsetGetParam(SCIP_PARAMSET *paramset, const char *name)
Definition: paramset.c:1703
#define SCIP_MEM_NOLIMIT
Definition: def.h:314
#define EPSP(x, eps)
Definition: def.h:208
#define SCIP_DEFAULT_REOPT_COMMONTIMELIMIT
Definition: set.c:449
enum SCIP_VerbLevel SCIP_VERBLEVEL
Definition: type_message.h:48
internal methods for branching rules and branching candidate storage
SCIP_RETCODE SCIPnodeselInitsol(SCIP_NODESEL *nodesel, SCIP_SET *set)
Definition: nodesel.c:955
SCIP_Real SCIPgetLPFeastol(SCIP *scip)
Definition: scip_lp.c:419
SCIP_RETCODE SCIPconflicthdlrExitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:605
SCIP_Real SCIPsetCutoffbounddelta(SCIP_SET *set)
Definition: set.c:6171
int SCIPsetCalcMemGrowSize(SCIP_SET *set, int num)
Definition: set.c:5785
#define SCIP_DEFAULT_PRESOL_MAXRESTARTS
Definition: set.c:368
SCIP_Bool SCIPsetIsSumLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6455
datastructures for concurrent solvers
SCIP_PARAM ** SCIPsetGetParams(SCIP_SET *set)
Definition: set.c:3659
SCIP_Real SCIPsetRound(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6415
#define SCIP_DEFAULT_CONF_IGNORERELAXEDBD
Definition: set.c:163
#define SCIP_DEFAULT_LIMIT_STALLNODES
Definition: set.c:218
#define SCIP_DEFAULT_SEPA_MAXSTALLROUNDSROOT
Definition: set.c:509
#define SCIP_DEFAULT_LP_SCALING
Definition: set.c:270
SCIP_Bool SCIPsetIsDualfeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6859
SCIP_RETCODE SCIPparamsetSetToDefaults(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
Definition: paramset.c:2763
int nheurs
Definition: struct_set.h:125
#define SCIP_DEFAULT_SEPA_MINACTIVITYQUOT
Definition: set.c:521
#define EPSGE(x, y, eps)
Definition: def.h:206
SCIP_RETCODE SCIPsetIncludeNlpi(SCIP_SET *set, SCIP_NLPI *nlpi)
Definition: set.c:5163
#define SCIP_DEFAULT_CONCURRENT_PRESOLVEBEFORE
Definition: set.c:536
SCIP_RETCODE SCIPenableOrDisableStatisticTiming(SCIP *scip)
Definition: scip_timing.c:218
#define SCIP_DEFAULT_NLP_SOLVER
Definition: set.c:292
SCIP_RETCODE SCIPbranchruleInitsol(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1477
SCIP_RETCODE SCIPconshdlrInit(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2389
SCIP_Real SCIPsetRelaxfeastol(SCIP_SET *set)
Definition: set.c:6185
const char * SCIPnlpiGetName(SCIP_NLPI *nlpi)
Definition: nlpi.c:693
SCIP_RETCODE SCIPsepaFree(SCIP_SEPA **sepa, SCIP_SET *set)
Definition: sepa.c:233
#define SCIP_DEFAULT_PROP_ABORTONCUTOFF
Definition: set.c:474
void SCIPcutselEnableOrDisableClocks(SCIP_CUTSEL *cutsel, SCIP_Bool enable)
Definition: cutsel.c:440
SCIP_RETCODE SCIPrelaxFree(SCIP_RELAX **relax, SCIP_SET *set)
Definition: relax.c:195
#define SCIP_DEFAULT_LP_CLEARINITIALPROBINGLP
Definition: set.c:248
#define SCIP_DEFAULT_CONF_MINIMPROVE
Definition: set.c:171
#define SCIP_DEFAULT_CONCURRENT_MINSYNCDELAY
Definition: set.c:550
#define EPSFRAC(x, eps)
Definition: def.h:213
#define SCIP_DEFAULT_REOPT_VARORDERINTERDICTION
Definition: set.c:420
internal methods for handling parameter settings
#define SCIP_DEFAULT_LP_SOLUTIONPOLISHING
Definition: set.c:286
SCIP_RETCODE SCIPsetIncludeConcsolverType(SCIP_SET *set, SCIP_CONCSOLVERTYPE *concsolvertype)
Definition: set.c:4514
#define SCIP_DEFAULT_SEPA_MAXLOCALBOUNDDIST
Definition: set.c:486
SCIP_RETCODE SCIPheurCopyInclude(SCIP_HEUR *heur, SCIP_SET *set)
Definition: heur.c:870
SCIP_Bool SCIPsetIsNegative(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6340
#define SCIP_DEFAULT_MISC_AVOIDMEMOUT
Definition: set.c:324
SCIP_PRESOL ** presols
Definition: struct_set.h:77
int ndialogs
Definition: struct_set.h:139
#define SCIP_LONGINT_MAX
Definition: def.h:163
#define SCIP_DEFAULT_DISP_FREQ
Definition: set.c:193
SCIP_RELAX ** relaxs
Definition: struct_set.h:78
#define SCIP_DEFAULT_CONF_DOWNLOCKSCOREFAC
Definition: set.c:157
#define BMSfreeMemory(ptr)
Definition: memory.h:138
SCIP_RETCODE SCIPpropInit(SCIP_PROP *prop, SCIP_SET *set)
Definition: prop.c:305
#define SCIP_DEFAULT_BENDERS_COPYBENDERS
Definition: set.c:409
#define SCIP_DEFAULT_MISC_IMPROVINGSOLS
Definition: set.c:321
SCIP_Real SCIPsetSumFloor(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6560
#define SCIP_DEFAULT_CONF_UPLOCKSCOREFAC
Definition: set.c:156
SCIP_CONSHDLR ** conshdlrs_include
Definition: struct_set.h:75
#define SCIP_DEFAULT_VISUAL_REALTIME
Definition: set.c:569
SCIP_Bool SCIPpropIsInitialized(SCIP_PROP *prop)
Definition: prop.c:1147
SCIP_RETCODE SCIPpricerCopyInclude(SCIP_PRICER *pricer, SCIP_SET *set, SCIP_Bool *valid)
Definition: pricer.c:78
#define SCIP_DEFAULT_LP_SOLVEDEPTH
Definition: set.c:236
SCIP_EXPRHDLR * SCIPsetFindExprhdlr(SCIP_SET *set, const char *name)
Definition: set.c:5131
#define SCIP_DEFAULT_SEPA_ORTHOFUNC
Definition: set.c:495
SCIP_Real SCIPparamGetReal(SCIP_PARAM *param)
Definition: paramset.c:819
SCIP_Real SCIPsetCeil(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6404
SCIP_Real SCIPsetGetHugeValue(SCIP_SET *set)
Definition: set.c:6083
internal methods for LP management
SCIP_Bool SCIPsetIsFeasFracIntegral(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6758
void SCIPsetSortHeursName(SCIP_SET *set)
Definition: set.c:4661
int nbranchrules
Definition: struct_set.h:133
Definition: heur_padm.c:123
#define SCIP_DEFAULT_CONCURRENT_TARGETPROGRESS
Definition: set.c:545
SCIP_RETCODE SCIPnodeselExit(SCIP_NODESEL *nodesel, SCIP_SET *set)
Definition: nodesel.c:925
#define SCIP_DEFAULT_LP_ROWREPSWITCH
Definition: set.c:278
int SCIPconshdlrGetSepaPriority(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:5054
#define SCIP_DEFAULT_LP_RESOLVEITERMIN
Definition: set.c:285
#define SCIP_DEFAULT_SEPA_MAXCOEFRATIO
Definition: set.c:491
#define SCIP_DEFAULT_MISC_SCALEOBJ
Definition: set.c:340
SCIP_RETCODE SCIPsetIncludeSepa(SCIP_SET *set, SCIP_SEPA *sepa)
Definition: set.c:4247
void SCIPsetSortBendersName(SCIP_SET *set)
Definition: set.c:3852
#define SCIP_DEFAULT_REOPT_STRONGBRANCHINIT
Definition: set.c:455
#define SCIP_DEFAULT_REOPT_STOREVARHISTOTY
Definition: set.c:443
SCIP_RETCODE SCIPsetIncludeCompr(SCIP_SET *set, SCIP_COMPR *compr)
Definition: set.c:4676
int ncutsels
Definition: struct_set.h:121
SCIP_RETCODE SCIPsetSetStringParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, const char *value)
Definition: set.c:3498
SCIP_RETCODE SCIPsetIncludeBenders(SCIP_SET *set, SCIP_BENDERS *benders)
Definition: set.c:3794
#define SCIP_DEFAULT_COMPR_ENABLE
Definition: set.c:94
SCIP * scip
Definition: struct_set.h:66
enum SCIP_ParamSetting SCIP_PARAMSETTING
Definition: type_paramset.h:56
int SCIPsetGetSepaMaxcuts(SCIP_SET *set, SCIP_Bool root)
Definition: set.c:5924
#define SCIP_DEFAULT_LP_ALWAYSGETDUALS
Definition: set.c:288
#define SCIP_DEFAULT_MISC_ALLOWSTRONGDUALREDS
Definition: set.c:330
SCIP_Bool SCIPconshdlrIsClonable(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:5194
#define SCIP_DEFAULT_DISP_WIDTH
Definition: set.c:192
SCIP_Real SCIPsetPseudocostdelta(SCIP_SET *set)
Definition: set.c:6161
SCIP_RETCODE SCIPreaderFree(SCIP_READER **reader, SCIP_SET *set)
Definition: reader.c:130
#define SCIP_DEFAULT_LP_ROOTITERLIM
Definition: set.c:235
SCIP_RETCODE SCIPpricerExit(SCIP_PRICER *pricer, SCIP_SET *set)
Definition: pricer.c:265
SCIP_RETCODE SCIPsepaInit(SCIP_SEPA *sepa, SCIP_SET *set)
Definition: sepa.c:260
#define SCIP_DEFAULT_EPSILON
Definition: def.h:183
SCIP_RETCODE SCIPsetAddCharParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, char *valueptr, SCIP_Bool isadvanced, char defaultvalue, const char *allowedvalues, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: set.c:3092
int neventhdlrs
Definition: struct_set.h:129
SCIP_Bool SCIPsetIsGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6300
#define SCIP_DEFAULT_CONF_SETTLELOCAL
Definition: set.c:146
internal methods for propagators
SCIP_RETCODE SCIPdispCopyInclude(SCIP_DISP *disp, SCIP_SET *set)
Definition: disp.c:56
SCIP_RETCODE SCIPparamSetInt(SCIP_PARAM *param, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, int value, SCIP_Bool initialize, SCIP_Bool quiet)
Definition: paramset.c:4560
#define SCIP_DEFAULT_CHECKFEASTOLFAC
Definition: def.h:186
SCIP_RETCODE SCIPnodeselCopyInclude(SCIP_NODESEL *nodesel, SCIP_SET *set)
Definition: nodesel.c:740
#define SCIP_DEFAULT_TIME_ENABLED
Definition: set.c:558
SCIP_NLPI ** nlpis
Definition: struct_set.h:98
SCIP_Bool SCIPsetIsEfficacious(SCIP_SET *set, SCIP_Bool root, SCIP_Real efficacy)
Definition: set.c:7068
#define SCIP_DEFAULT_PRESOL_RESTARTMINRED
Definition: set.c:379
#define SCIP_DEFAULT_CONF_KEEPREPROP
Definition: set.c:152
#define SCIP_DEFAULT_LIMIT_NODES
Definition: set.c:217
SCIP_Real SCIPsetDualfeasFloor(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6982
SCIP_RETCODE SCIPsetInitPlugins(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat)
Definition: set.c:5266
SCIP_RETCODE SCIPsetFree(SCIP_SET **set, BMS_BLKMEM *blkmem)
Definition: set.c:2793
void SCIPreaderEnableOrDisableClocks(SCIP_READER *reader, SCIP_Bool enable)
Definition: reader.c:608
#define SCIP_DEFAULT_LIMIT_AUTORESTARTNODES
Definition: set.c:228
int SCIPconshdlrGetCheckPriority(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:5074
SCIP_RETCODE SCIPeventhdlrFree(SCIP_EVENTHDLR **eventhdlr, SCIP_SET *set)
Definition: event.c:140
struct SCIP_DebugSolData SCIP_DEBUGSOLDATA
Definition: debug.h:50
SCIP_RETCODE SCIPparamSetChar(SCIP_PARAM *param, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, char value, SCIP_Bool initialize, SCIP_Bool quiet)
Definition: paramset.c:4742
SCIP_Bool SCIPsetIsLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6246
SCIP_RETCODE SCIPsetReadParams(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *filename)
Definition: set.c:3513
SCIP_Bool SCIPtableIsInitialized(SCIP_TABLE *table)
Definition: table.c:350
#define SCIP_DEFAULT_PRICE_MAXVARS
Definition: set.c:391
#define SCIP_DEFAULT_MISC_ALLOWWEAKDUALREDS
Definition: set.c:331
#define SCIP_DEFAULT_PRICE_ABORTFAC
Definition: set.c:388
#define SCIP_DEFAULT_TIME_READING
Definition: set.c:559
SCIP_RETCODE SCIPparamsetSetToSubscipsOff(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_Bool quiet)
Definition: paramset.c:4076
#define SCIP_DEFAULT_CONF_LPITERATIONS
Definition: set.c:105
SCIP_RETCODE SCIPconflicthdlrExit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:550
#define SCIP_DEFAULT_CONF_USEBOUNDLP
Definition: set.c:114
SCIP_RETCODE SCIPconshdlrCopyInclude(SCIP_CONSHDLR *conshdlr, SCIP_SET *set, SCIP_Bool *valid)
Definition: cons.c:1969
#define SCIP_DEFAULT_PRESOL_RESTARTFAC
Definition: set.c:370
SCIP_RETCODE SCIPconflicthdlrInitsol(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:581
SCIP_Bool SCIPsetIsSumLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6473
SCIP_CONSHDLR * SCIPsetFindConshdlr(SCIP_SET *set, const char *name)
Definition: set.c:4006
SCIP_RETCODE SCIPsepaInitsol(SCIP_SEPA *sepa, SCIP_SET *set)
Definition: sepa.c:343
SCIP_RETCODE SCIPsetIncludeHeur(SCIP_SET *set, SCIP_HEUR *heur)
Definition: set.c:4602
#define SCIP_DEFAULT_LP_LEXDUALALGO
Definition: set.c:272
#define SCIP_DEFAULT_RANDOM_LPSEED
Definition: set.c:350
SCIP_RETCODE SCIPsetChgIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAM *param, int value)
Definition: set.c:3309
#define SCIP_DEFAULT_REOPT_OBJSIMROOTLP
Definition: set.c:416
BMS_BUFMEM * SCIPbuffer(SCIP *scip)
Definition: scip_mem.c:63
SCIP_Bool SCIPsetIsParamFixed(SCIP_SET *set, const char *name)
Definition: set.c:3137
#define SCIP_DEFAULT_MISC_ESTIMEXTERNMEM
Definition: set.c:323
void BMSsetBufferMemoryArraygrowinit(BMS_BUFMEM *buffer, int arraygrowinit)
Definition: memory.c:2583
SCIP_RETCODE SCIPcutselCopyInclude(SCIP_CUTSEL *cutsel, SCIP_SET *set)
Definition: cutsel.c:245
#define EPSN(x, eps)
Definition: def.h:209
SCIP_Bool SCIPsetIsSumRelGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7281
#define SCIP_DEFAULT_SEPA_MAXROUNDS
Definition: set.c:503
SCIP_RETCODE SCIPsetSetSubscipsOff(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_Bool quiet)
Definition: set.c:3593
SCIP_RETCODE SCIPsetIncludeCutsel(SCIP_SET *set, SCIP_CUTSEL *cutsel)
Definition: set.c:4321
void SCIPsetSetPriorityNlpi(SCIP_SET *set, SCIP_NLPI *nlpi, int priority)
Definition: set.c:5220
#define SCIP_DEFAULT_CONCURRENT_CHANGESEEDS
Definition: set.c:533
SCIP_RETCODE SCIPbendersInitsol(SCIP_BENDERS *benders, SCIP_SET *set)
Definition: benders.c:2423
void SCIPsetReinsertConshdlrSepaPrio(SCIP_SET *set, SCIP_CONSHDLR *conshdlr, int oldpriority)
Definition: set.c:3923
SCIP_RETCODE SCIPparamsetGetInt(SCIP_PARAMSET *paramset, const char *name, int *value)
Definition: paramset.c:1747
void SCIPconshdlrEnableOrDisableClocks(SCIP_CONSHDLR *conshdlr, SCIP_Bool enable)
Definition: cons.c:4654
#define SCIP_DEFAULT_CONF_CONFLITGRAPHWEIGHT
Definition: set.c:167
const char * SCIPheurGetName(SCIP_HEUR *heur)
Definition: heur.c:1441
#define SCIP_DEFAULT_CONF_WEIGHTVALIDDEPTH
Definition: set.c:170
SCIP_RETCODE SCIPsetChgBoolParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAM *param, SCIP_Bool value)
Definition: set.c:3257
#define SCIP_DEFAULT_MEM_TREEGROWFAC
Definition: set.c:299
#define SCIP_DEFAULT_PRESOL_DONOTMULTAGGR
Definition: set.c:382
#define SCIP_DEFAULT_CONF_INTERCONSS
Definition: set.c:138
#define SCIP_DEFAULT_REOPT_USESPLITCONS
Definition: set.c:462
#define SCIPerrorMessage
Definition: pub_message.h:55
const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:4175
#define SCIP_DEFAULT_RANDOM_PERMUTECONSS
Definition: set.c:351
SCIP_BANDITVTABLE * SCIPsetFindBanditvtable(SCIP_SET *set, const char *name)
Definition: set.c:4493
SCIP_RETCODE SCIPparamsetSetReal(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_Real value)
Definition: paramset.c:2033
#define SCIP_DEFAULT_CONF_SEPARATE
Definition: set.c:124
SCIP_RETCODE SCIPdispExitsol(SCIP_DISP *disp, SCIP_SET *set)
Definition: disp.c:271
SCIP_RETCODE SCIPrelaxExit(SCIP_RELAX *relax, SCIP_SET *set)
Definition: relax.c:266
SCIP_RETCODE SCIPparamSetBool(SCIP_PARAM *param, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_Bool value, SCIP_Bool initialize, SCIP_Bool quiet)
Definition: paramset.c:4500
#define SCIP_DEFAULT_TIME_RARECLOCKCHECK
Definition: set.c:560
#define SCIP_DEFAULT_BRANCH_SCOREFUNC
Definition: set.c:71
SCIP_RETCODE SCIPsetWriteParams(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *filename, SCIP_Bool comments, SCIP_Bool onlychanged)
Definition: set.c:3527
SCIP_RETCODE SCIPparamsetSetDefaultInt(SCIP_PARAMSET *paramset, const char *name, int defaultvalue)
Definition: paramset.c:2166
SCIP_RETCODE SCIPparamsetGetBool(SCIP_PARAMSET *paramset, const char *name, SCIP_Bool *value)
Definition: paramset.c:1715
static SCIP_DECL_PARAMCHGD(paramChgdFeastol)
Definition: set.c:641
SCIP_Bool SCIPsetIsSumRelEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7193
SCIP_RETCODE SCIPtableInit(SCIP_TABLE *table, SCIP_SET *set)
Definition: table.c:179
#define SCIP_DEFAULT_DECOMP_DISABLEMEASURES
Definition: set.c:404
SCIP_Bool SCIPeventhdlrIsInitialized(SCIP_EVENTHDLR *eventhdlr)
Definition: event.c:423
SCIP_Bool SCIPsetIsRelEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7083
#define SCIP_DEFAULT_SEPA_MINEFFICACY
Definition: set.c:493
SCIP_RETCODE SCIPsetSetSeparating(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
Definition: set.c:3646
SCIP_Bool SCIPsetIsDualfeasIntegral(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6958
#define SCIP_DEFAULT_MISC_EXACTSOLVE
Definition: set.c:311
SCIP_RETCODE SCIPpricerFree(SCIP_PRICER **pricer, SCIP_SET *set)
Definition: pricer.c:198
void SCIPpresolEnableOrDisableClocks(SCIP_PRESOL *presol, SCIP_Bool enable)
Definition: presol.c:676
#define SCIP_DEFAULT_HISTORY_ALLOWTRANSFER
Definition: set.c:207
#define SCIP_DEFAULT_LIMIT_BESTSOL
Definition: set.c:222
internal methods for presolvers
SCIP_RETCODE SCIPbranchruleExit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1447
void SCIPsetSortComprs(SCIP_SET *set)
Definition: set.c:4720
SCIP_RETCODE SCIPsetInitsolPlugins(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat)
Definition: set.c:5575
#define SCIP_DEFAULT_BRANCH_CLAMP
Definition: set.c:76
SCIP_RETCODE SCIPsetSetIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, int value)
Definition: set.c:3332
SCIP_RELAX * SCIPsetFindRelax(SCIP_SET *set, const char *name)
Definition: set.c:4197
SCIP_RETCODE SCIPbendersExitsol(SCIP_BENDERS *benders, SCIP_SET *set)
Definition: benders.c:2456
void SCIPeventhdlrEnableOrDisableClocks(SCIP_EVENTHDLR *eventhdlr, SCIP_Bool enable)
Definition: event.c:433
SCIP_RETCODE SCIPparamSetString(SCIP_PARAM *param, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *value, SCIP_Bool quiet)
Definition: paramset.c:4801
SCIP_RETCODE SCIPconshdlrInitpre(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2545
#define SCIP_DEFAULT_CONF_USELOCALROWS
Definition: set.c:176
SCIP_Real SCIPsetBarrierconvtol(SCIP_SET *set)
Definition: set.c:6141
int SCIPsetGetNParams(SCIP_SET *set)
Definition: set.c:3669
SCIP_CONFLICTHDLR * SCIPsetFindConflicthdlr(SCIP_SET *set, const char *name)
Definition: set.c:4050
SCIP_RETCODE SCIPsetChgRealParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAM *param, SCIP_Real value)
Definition: set.c:3399
SCIP_Bool SCIPdispIsInitialized(SCIP_DISP *disp)
Definition: disp.c:396
#define SCIP_DEFAULT_MISC_TRANSSOLSORIG
Definition: set.c:326
SCIP_Bool SCIPsetExistsDialog(SCIP_SET *set, SCIP_DIALOG *dialog)
Definition: set.c:5075
SCIP_RETCODE SCIPparamsetGetLongint(SCIP_PARAMSET *paramset, const char *name, SCIP_Longint *value)
Definition: paramset.c:1779
SCIP_Bool SCIPsetGetSubscipsOff(SCIP_SET *set)
Definition: set.c:7303
SCIP_RETCODE SCIPparamsetCreate(SCIP_PARAMSET **paramset, BMS_BLKMEM *blkmem)
Definition: paramset.c:1417
SCIP_Bool SCIPsetIsSumRelLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7215
SCIP_Real SCIPsetFeasCeil(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6782
void SCIPresetLPFeastol(SCIP *scip)
Definition: scip_lp.c:443
void SCIPsetSetLimitChanged(SCIP_SET *set)
Definition: set.c:5900
#define SCIP_DEFAULT_LP_ROWAGELIMIT
Definition: set.c:256
#define SCIP_DEFAULT_LP_RESOLVEALGORITHM
Definition: set.c:240
#define SCIP_DEFAULT_RANDOM_PERMUTEVARS
Definition: set.c:352
#define SCIP_DEFAULT_LP_COLAGELIMIT
Definition: set.c:253
SCIP_Bool SCIPsetIsRelLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7127
SCIP_RETCODE SCIPsetChgLongintParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAM *param, SCIP_Longint value)
Definition: set.c:3361
#define NULL
Definition: lpi_spx1.cpp:155
SCIP_RETCODE SCIPparamsetSetEmphasis(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAMEMPHASIS paramemphasis, SCIP_Bool quiet)
Definition: paramset.c:3808
SCIP_RETCODE SCIPparamsetAddLongint(SCIP_PARAMSET *paramset, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Longint *valueptr, SCIP_Bool isadvanced, SCIP_Longint defaultvalue, SCIP_Longint minvalue, SCIP_Longint maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: paramset.c:1547
#define SCIP_DEFAULT_REOPT_OBJSIMSOL
Definition: set.c:413
SCIP_Real SCIPsetDualfeasCeil(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6993
SCIP_RETCODE SCIPnodeselFree(SCIP_NODESEL **nodesel, SCIP_SET *set)
Definition: nodesel.c:860
SCIP_Bool SCIPsetIsDualfeasFracIntegral(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6969
SCIP_RETCODE SCIPparamsetAddString(SCIP_PARAMSET *paramset, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, char **valueptr, SCIP_Bool isadvanced, const char *defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: paramset.c:1636
int nrelaxs
Definition: struct_set.h:117
SCIP_Bool SCIPsetIsDualfeasGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6881
void SCIPpropEnableOrDisableClocks(SCIP_PROP *prop, SCIP_Bool enable)
Definition: prop.c:1010
SCIP_Real SCIPsetFrac(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6426
SCIP_RETCODE SCIPsetIncludePricer(SCIP_SET *set, SCIP_PRICER *pricer)
Definition: set.c:3721
#define REALABS(x)
Definition: def.h:201
SCIP_SEPA * SCIPsetFindSepa(SCIP_SET *set, const char *name)
Definition: set.c:4271
#define SCIP_DEFAULT_REOPT_MAXCUTAGE
Definition: set.c:468
SCIP_RETCODE SCIPchgDualfeastol(SCIP *scip, SCIP_Real dualfeastol)
#define SCIPdebugFree(set)
Definition: debug.h:264
#define SCIP_DEFAULT_BENDERS_CUTLPSOL
Definition: set.c:408
SCIP_Bool SCIPsetIsRelGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7149
#define SCIP_DEFAULT_PRINTZEROS
Definition: set.c:591
internal methods for node selectors and node priority queues
#define SCIP_DEFAULT_BRANCH_SCOREFAC
Definition: set.c:72
internal methods for variable pricers
const char * SCIPrelaxGetName(SCIP_RELAX *relax)
Definition: relax.c:533
SCIP_RETCODE SCIPconflicthdlrFree(SCIP_CONFLICTHDLR **conflicthdlr, SCIP_SET *set)
Definition: conflict.c:485
#define SCIP_DEFAULT_REOPT_SAVESOLS
Definition: set.c:433
void SCIPsetSortProps(SCIP_SET *set)
Definition: set.c:4426
void SCIPsortPtr(void **ptrarray, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), int len)
internal methods for global SCIP settings
#define SCIP_DEFAULT_TIME_CLOCKTYPE
Definition: set.c:557
#define SCIP_CALL(x)
Definition: def.h:384
SCIP_RETCODE SCIPsetSetReoptimizationParams(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
Definition: set.c:806
SCIP_RETCODE SCIPrelaxCopyInclude(SCIP_RELAX *relax, SCIP_SET *set)
Definition: relax.c:74
SCIP main data structure.
#define SCIP_DEFAULT_READ_DYNAMICCONSS
Definition: set.c:578
SCIP_Bool SCIPsetIsFeasGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6692
#define SCIP_DEFAULT_FEASTOL
Definition: def.h:185
#define SCIP_DEFAULT_REOPT_SOLVELP
Definition: set.c:434
SCIP_RETCODE SCIPparamsetSetHeuristics(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
Definition: paramset.c:4181
#define SCIP_DEFAULT_LP_FREESOLVALBUFFERS
Definition: set.c:252
SCIP_RETCODE SCIPconcsolverDestroyInstance(SCIP_SET *set, SCIP_CONCSOLVER **concsolver)
Definition: concsolver.c:248
SCIP_RETCODE SCIPeventhdlrInitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
Definition: event.c:237
SCIP_RETCODE SCIPsetSetPresolving(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
Definition: set.c:3628
SCIP_Bool SCIPsetIsLbBetter(SCIP_SET *set, SCIP_Real newlb, SCIP_Real oldlb, SCIP_Real oldub)
Definition: set.c:7029
#define SCIP_DEFAULT_PSEUDOCOSTEPS
Definition: def.h:191
void SCIPmarkLimitChanged(SCIP *scip)
BMS_BUFMEM * SCIPcleanbuffer(SCIP *scip)
Definition: scip_mem.c:77
int nexprhdlrs
Definition: struct_set.h:141
int SCIPsetCalcTreeGrowSize(SCIP_SET *set, int num)
Definition: set.c:5794
SCIP_EXPRHDLR ** exprhdlrs
Definition: struct_set.h:92
#define SCIP_DEFAULT_CONF_USESB
Definition: set.c:119
internal methods for relaxators
SCIP_RETCODE SCIPsetAddIntParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: set.c:3020
SCIP_RETCODE SCIPparamSetLongint(SCIP_PARAM *param, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_Longint value, SCIP_Bool initialize, SCIP_Bool quiet)
Definition: paramset.c:4620
SCIP_Bool SCIPsetIsEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6228
SCIP_RETCODE SCIPnodeselInit(SCIP_NODESEL *nodesel, SCIP_SET *set)
Definition: nodesel.c:889
int SCIPparamsetGetNParams(SCIP_PARAMSET *paramset)
Definition: paramset.c:4294
int nsepas
Definition: struct_set.h:119
SCIP_CUTSEL * SCIPsetFindCutsel(SCIP_SET *set, const char *name)
Definition: set.c:4345
SCIP_Bool SCIPsetIsHugeValue(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6217
#define SCIP_DEFAULT_DECOMP_MAXGRAPHEDGE
Definition: set.c:403
SCIP_RETCODE SCIPcomprExit(SCIP_COMPR *compr, SCIP_SET *set)
Definition: compr.c:260
#define SCIP_DEFAULT_LP_CLEANUPCOLSROOT
Definition: set.c:260
#define SCIP_DEFAULT_LP_CLEANUPROWSROOT
Definition: set.c:262
#define SCIP_DEFAULT_SEPA_MINEFFICACYROOT
Definition: set.c:494
void SCIPsetSortPropsPresol(SCIP_SET *set)
Definition: set.c:4441
#define SCIP_DEFAULT_REOPT_USEPSCOST
Definition: set.c:448
SCIP_Bool SCIPsetIsFeasLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6648
SCIP_RETCODE SCIPsetSetFeastol(SCIP_SET *set, SCIP_LP *lp, SCIP_Real feastol)
Definition: set.c:5831
void SCIPsetSortPresolsName(SCIP_SET *set)
Definition: set.c:4158
#define EPSCEIL(x, eps)
Definition: def.h:211
#define BMSduplicateMemoryArray(ptr, source, num)
Definition: memory.h:136
SCIP_Bool SCIPconshdlrNeedsCons(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:5114
#define SCIP_DEFAULT_MISC_PRINTREASON
Definition: set.c:322
SCIP_READER * SCIPsetFindReader(SCIP_SET *set, const char *name)
Definition: set.c:3701
void SCIPsetSortRelaxs(SCIP_SET *set)
Definition: set.c:4217
SCIP_RETCODE SCIPcutselInit(SCIP_CUTSEL *cutsel, SCIP_SET *set)
Definition: cutsel.c:294
#define SCIP_DEFAULT_TIME_STATISTICTIMING
Definition: set.c:561
SCIP_BRANCHRULE ** branchrules
Definition: struct_set.h:88
#define SCIP_DEFAULT_LP_CLEANUPROWS
Definition: set.c:261
SCIP_RETCODE SCIPconflicthdlrInit(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:513
#define SCIP_DEFAULT_CONF_ENABLE
Definition: set.c:99
#define SCIP_DEFAULT_LIMIT_MAXORIGSOL
Definition: set.c:226
SCIP_RETCODE SCIPsetSetLongintParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_Longint value)
Definition: set.c:3384
SCIP_Bool SCIPcutselIsInitialized(SCIP_CUTSEL *cutsel)
Definition: cutsel.c:535
SCIP_Real SCIPlpGetFeastol(SCIP_LP *lp)
Definition: lp.c:10241
#define SCIP_DEFAULT_SEPA_MAXBOUNDDIST
Definition: set.c:481
SCIP_COMPR * SCIPsetFindCompr(SCIP_SET *set, const char *name)
Definition: set.c:4700
SCIP_RETCODE SCIPsetIncludeProp(SCIP_SET *set, SCIP_PROP *prop)
Definition: set.c:4379
SCIP_RETCODE SCIPbendersInitpre(SCIP_BENDERS *benders, SCIP_SET *set, SCIP_STAT *stat)
Definition: benders.c:2354
SCIP_RETCODE SCIPactivatePricer(SCIP *scip, SCIP_PRICER *pricer)
Definition: scip_pricer.c:375
void SCIPsetSortBenders(SCIP_SET *set)
Definition: set.c:3837
#define SCIP_DEFAULT_LIMIT_RESTARTS
Definition: set.c:227
#define SCIP_DEFAULT_DISP_ALLVIOLS
Definition: set.c:196
SCIP_Bool SCIPsetIsIntegral(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6351
#define SCIP_DEFAULT_HUGEVAL
Definition: def.h:194
#define SCIP_DEFAULT_PRICE_DELVARS
Definition: set.c:393
SCIP_RETCODE SCIPsetSetHeuristics(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
Definition: set.c:3610
int SCIPdispGetPosition(SCIP_DISP *disp)
Definition: disp.c:376
internal methods for user interface dialog
#define SCIP_Bool
Definition: def.h:84
#define SCIP_DEFAULT_CONCURRENT_FREQMAX
Definition: set.c:541
#define SCIP_DEFAULT_MEM_PATHGROWFAC
Definition: set.c:300
SCIP_Real SCIPsetSumepsilon(SCIP_SET *set)
Definition: set.c:6103
void SCIPsetSortSepasName(SCIP_SET *set)
Definition: set.c:4306
#define SCIP_DEFAULT_LIMIT_MAXSOL
Definition: set.c:225
SCIP_RETCODE SCIPsetIncludeTable(SCIP_SET *set, SCIP_TABLE *table)
Definition: set.c:5008
#define SCIP_DEFAULT_LPFEASTOLFACTOR
Definition: def.h:187
SCIP_PARAMSET * paramset
Definition: struct_set.h:67
SCIP_RETCODE SCIPsetSetBarrierconvtol(SCIP_SET *set, SCIP_Real barrierconvtol)
Definition: set.c:5865
void SCIPsetSortExprhdlrs(SCIP_SET *set)
Definition: set.c:5149
SCIP_NODESEL * SCIPsetFindNodesel(SCIP_SET *set, const char *name)
Definition: set.c:4824
SCIP_RETCODE SCIPparamsetSetInt(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, int value)
Definition: paramset.c:1965
SCIP_RETCODE SCIPtableExitsol(SCIP_TABLE *table, SCIP_SET *set)
Definition: table.c:245
int SCIPsetCalcPathGrowSize(SCIP_SET *set, int num)
Definition: set.c:5803
#define SCIP_DEFAULT_PRICE_DELVARSROOT
Definition: set.c:396
#define SCIP_DEFAULT_REOPT_OBJSIMDELAY
Definition: set.c:417
SCIP_RETCODE SCIPrelaxInitsol(SCIP_RELAX *relax, SCIP_SET *set)
Definition: relax.c:296
SCIP_Real SCIPlpiInfinity(SCIP_LPI *lpi)
Definition: lpi_clp.cpp:3905
SCIP_Bool memsavemode
Definition: struct_stat.h:268
#define SCIP_DEFAULT_DECOMP_APPLYBENDERS
Definition: set.c:402
SCIP_RETCODE SCIPautoselectDisps(SCIP *scip)
Definition: scip_disp.c:123
#define SCIP_DEFAULT_CONF_REMOVEABLE
Definition: set.c:153
#define SCIP_DEFAULT_PRESOL_IMMRESTARTFAC
Definition: set.c:373
#define SCIP_DEFAULT_CONF_DEPTHSCOREFAC
Definition: set.c:154
#define SCIP_DEFAULT_BENDERS_SOLTOL
Definition: set.c:407
SCIP_RETCODE SCIPparamsetGetReal(SCIP_PARAMSET *paramset, const char *name, SCIP_Real *value)
Definition: paramset.c:1811
void BMSsetBufferMemoryArraygrowfac(BMS_BUFMEM *buffer, double arraygrowfac)
Definition: memory.c:2571
SCIP_RETCODE SCIPcutselExit(SCIP_CUTSEL *cutsel, SCIP_SET *set)
Definition: cutsel.c:331
#define SCIP_DEFAULT_MISC_TRANSORIGSOLS
Definition: set.c:325
internal methods for input file readers
#define SCIP_DEFAULT_BOUNDSTREPS
Definition: def.h:190
SCIP_RETCODE SCIPsetGetIntParam(SCIP_SET *set, const char *name, int *value)
Definition: set.c:3173
SCIP_HEUR ** heurs
Definition: struct_set.h:83
SCIP_RETCODE SCIPheurInit(SCIP_HEUR *heur, SCIP_SET *set)
Definition: heur.c:1052
SCIP_RETCODE SCIPsetIncludeExternalCode(SCIP_SET *set, const char *name, const char *description)
Definition: set.c:5234
#define MAX(x, y)
Definition: tclique_def.h:83
SCIP_RETCODE SCIPpricerExitsol(SCIP_PRICER *pricer, SCIP_SET *set)
Definition: pricer.c:320
void SCIPsetSortNlpis(SCIP_SET *set)
Definition: set.c:5206
int nreaders
Definition: struct_set.h:106
#define SCIP_DEFAULT_LP_SOLVEFREQ
Definition: set.c:233
SCIP_RETCODE SCIPparamsetSetDefaultBool(SCIP_PARAMSET *paramset, const char *name, SCIP_Bool defaultvalue)
Definition: paramset.c:2135
SCIP_RETCODE SCIPsetCopyParams(SCIP_SET *sourceset, SCIP_SET *targetset, SCIP_MESSAGEHDLR *messagehdlr)
Definition: set.c:1153
SCIP_RETCODE SCIPparamsetGetString(SCIP_PARAMSET *paramset, const char *name, char **value)
Definition: paramset.c:1875
SCIP_Real SCIPsetDualfeasFrac(SCIP_SET *set, SCIP_Real val)
Definition: set.c:7015
void SCIPbranchruleEnableOrDisableClocks(SCIP_BRANCHRULE *branchrule, SCIP_Bool enable)
Definition: branch.c:2050
SCIP_RETCODE SCIPparamsetSetBool(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_Bool value)
Definition: paramset.c:1931
#define SCIP_DEFAULT_DISP_VERBLEVEL
Definition: set.c:191
#define SCIPsetDebugMsg
Definition: set.h:1761
const char * SCIPpresolGetName(SCIP_PRESOL *presol)
Definition: presol.c:590
SCIP_RETCODE SCIPbendersFree(SCIP_BENDERS **benders, SCIP_SET *set)
Definition: benders.c:1271
SCIP_Bool SCIPsetIsRelLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7105
#define SCIP_DEFAULT_LP_LEXDUALSTALLING
Definition: set.c:276
SCIP_RETCODE SCIPparamsetCopyParams(SCIP_PARAMSET *sourceparamset, SCIP_PARAMSET *targetparamset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr)
Definition: paramset.c:4308
const char * SCIPnodeselGetName(SCIP_NODESEL *nodesel)
Definition: nodesel.c:1043
SCIP_Real SCIPsetDualfeasRound(SCIP_SET *set, SCIP_Real val)
Definition: set.c:7004
void SCIPsetDebugMessagePrint(SCIP_SET *set, const char *formatstr,...)
Definition: set.c:7383
#define SCIP_DEFAULT_BRANCH_LPGAINNORMALIZE
Definition: set.c:81
#define SCIP_DEFAULT_CONCURRENT_MAXNSOLS
Definition: set.c:548
#define SCIP_DEFAULT_MEM_ARRAYGROWFAC
Definition: def.h:311
SCIP_RETCODE SCIPparamsetSetPresolving(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAMSETTING paramsetting, SCIP_Bool quiet)
Definition: paramset.c:4217
SCIP_RETCODE SCIPtableCopyInclude(SCIP_TABLE *table, SCIP_SET *set)
Definition: table.c:46
#define SCIP_DEFAULT_CONF_USEPSEUDO
Definition: set.c:122
#define SCIP_DEFAULT_CONF_WEIGHTREPROPDEPTH
Definition: set.c:169
void SCIPheurEnableOrDisableClocks(SCIP_HEUR *heur, SCIP_Bool enable)
Definition: heur.c:1607
#define EPSLE(x, y, eps)
Definition: def.h:204
void SCIPrelaxEnableOrDisableClocks(SCIP_RELAX *relax, SCIP_Bool enable)
Definition: relax.c:597
#define SCIP_DEFAULT_PRESOL_SUBRESTARTFAC
Definition: set.c:376
SCIP_RETCODE SCIPsetSetDefaultBoolParam(SCIP_SET *set, const char *name, SCIP_Bool defaultvalue)
Definition: set.c:3294
#define SCIP_DEFAULT_CONF_MINMAXVARS
Definition: set.c:101
SCIP_RETCODE SCIPsetAddStringParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, char **valueptr, SCIP_Bool isadvanced, const char *defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: set.c:3115
SCIP_RETCODE SCIPsetSetCharParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, char value)
Definition: set.c:3460
SCIP_Bool SCIPsetIsSumNegative(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6549
int ntables
Definition: struct_set.h:137
SCIP_HEUR * SCIPsetFindHeur(SCIP_SET *set, const char *name)
Definition: set.c:4626
SCIP_DIALOG ** dialogs
Definition: struct_set.h:91
#define SCIP_DEFAULT_CONF_WEIGHTSIZE
Definition: set.c:168
#define SCIP_DEFAULT_LIMIT_MEMORY
Definition: set.c:212
SCIP_RETCODE SCIPchgFeastol(SCIP *scip, SCIP_Real feastol)
#define SCIP_DEFAULT_LP_RESOLVERESTORE
Definition: set.c:251
SCIP_DISP * SCIPsetFindDisp(SCIP_SET *set, const char *name)
Definition: set.c:4988
SCIP_Bool SCIPparamGetBool(SCIP_PARAM *param)
Definition: paramset.c:700
int nconflicthdlrs
Definition: struct_set.h:113
#define SCIP_DEFAULT_LP_LEXDUALBASIC
Definition: set.c:275
#define SCIP_DEFAULT_HISTORY_VALUEBASED
Definition: set.c:205
SCIP_RETCODE SCIPsetIncludeNodesel(SCIP_SET *set, SCIP_NODESEL *nodesel)
Definition: set.c:4793
SCIP_RETCODE SCIPpropInitpre(SCIP_PROP *prop, SCIP_SET *set)
Definition: prop.c:401
SCIP_Bool SCIPsetIsFeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6626
#define SCIP_DEFAULT_REOPT_SOLVELPDIFF
Definition: set.c:435
int SCIPconshdlrGetEnfoPriority(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:5064
void SCIPnlpiInit(SCIP_NLPI *nlpi)
Definition: nlpi.c:184
SCIP_Bool SCIPconshdlrIsInitialized(SCIP_CONSHDLR *conshdlr)
Definition: cons.c:5184
SCIP_Bool SCIPsetIsSumEQ(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6437
SCIP_RETCODE SCIPparamsetAddInt(SCIP_PARAMSET *paramset, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int *valueptr, SCIP_Bool isadvanced, int defaultvalue, int minvalue, int maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: paramset.c:1517
#define SCIP_DEFAULT_LP_ITERLIM
Definition: set.c:234
#define SCIP_DEFAULT_CONCURRENT_INITSEED
Definition: set.c:537
SCIP_RETCODE SCIPsetGetCharParam(SCIP_SET *set, const char *name, char *value)
Definition: set.c:3215
#define SCIP_MAXTREEDEPTH
Definition: def.h:320
SCIP_Real SCIPsetGetReferencevalue(SCIP_SET *set)
Definition: set.c:5952
#define SCIP_DEFAULT_REOPT_SHRINKINNER
Definition: set.c:450
void SCIPsetEnableOrDisablePluginClocks(SCIP_SET *set, SCIP_Bool enabled)
Definition: set.c:864
SCIP_TABLE ** tables
Definition: struct_set.h:90
public methods for NLP solver interfaces
SCIP_PARAM * SCIPsetGetParam(SCIP_SET *set, const char *name)
Definition: set.c:3148
const char * SCIPpropGetName(SCIP_PROP *prop)
Definition: prop.c:932
SCIP_Real SCIPsetFeasFrac(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6804
enum SCIP_ParamEmphasis SCIP_PARAMEMPHASIS
Definition: type_paramset.h:75
#define SCIP_REAL_MAX
Definition: def.h:178
SCIP_Bool SCIPsetIsDualfeasPositive(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6936
#define SCIP_DEFAULT_SEPA_CUTSELRESTART
Definition: set.c:499
int SCIPparamGetInt(SCIP_PARAM *param)
Definition: paramset.c:725
SCIP_RETCODE SCIPsetGetRealParam(SCIP_SET *set, const char *name, SCIP_Real *value)
Definition: set.c:3201
SCIP_RETCODE SCIPconshdlrExitpre(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
Definition: cons.c:2631
SCIP_RETCODE SCIPparamsetSetString(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, const char *value)
Definition: paramset.c:2101
#define EPSLT(x, y, eps)
Definition: def.h:203
#define SCIP_DEFAULT_SEPA_MAXSTALLROUNDS
Definition: set.c:512
#define SCIP_REAL_MIN
Definition: def.h:179
#define SCIP_DEFAULT_CONS_OBSOLETEAGE
Definition: set.c:183
#define SCIP_DEFAULT_LP_FASTMIP
Definition: set.c:269
SCIP_Bool SCIPsetIsSumPositive(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6538
SCIP_Real SCIPsetFeasFloor(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6771
#define SCIP_DEFAULT_CONF_USEPROP
Definition: set.c:108
#define SCIP_DEFAULT_CONF_PREFINFPROOF
Definition: set.c:123
#define EPSGT(x, y, eps)
Definition: def.h:205
SCIP_VAR ** b
Definition: circlepacking.c:56
const char * SCIPcomprGetName(SCIP_COMPR *compr)
Definition: compr.c:447
int SCIPconcsolverGetIdx(SCIP_CONCSOLVER *concsolver)
Definition: concsolver.c:614
#define SCIP_DEFAULT_BRANCH_CHECKSBSOL
Definition: set.c:88
void SCIPsetSortBranchrules(SCIP_SET *set)
Definition: set.c:4926
int npricers
Definition: struct_set.h:108
#define SCIP_DEFAULT_CONF_FUIPLEVELS
Definition: set.c:135
#define SCIP_DEFAULT_INFINITY
Definition: def.h:182
#define SCIP_DEFAULT_SEPA_EFFICACYNORM
Definition: set.c:496
#define SCIP_DEFAULT_RANDOM_RANDSEEDSHIFT
Definition: set.c:348
#define SCIP_DEFAULT_MEM_PATHGROWINIT
Definition: set.c:302
#define SCIP_DEFAULT_LP_RESOLVEITERFAC
Definition: set.c:282
SCIP_RETCODE SCIPdialogCopyInclude(SCIP_DIALOG *dialog, SCIP_SET *set)
Definition: dialog.c:309
#define SCIP_DEFAULT_DUALFEASTOL
Definition: def.h:188
#define SCIP_DEFAULT_PARALLEL_MINNTHREADS
Definition: set.c:529
internal methods for conflict analysis
SCIP_BENDERS * SCIPsetFindBenders(SCIP_SET *set, const char *name)
Definition: set.c:3817
void SCIPsetSortPresols(SCIP_SET *set)
Definition: set.c:4143
SCIP_RETCODE SCIPsepaExit(SCIP_SEPA *sepa, SCIP_SET *set)
Definition: sepa.c:313
internal methods for tree compressions
void SCIPsetSortRelaxsName(SCIP_SET *set)
Definition: set.c:4232
SCIP_RETCODE SCIPsetResetParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name)
Definition: set.c:3543
void SCIPmessageVFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr, va_list ap)
Definition: message.c:624
#define SCIP_DEFAULT_DISP_HEADERFREQ
Definition: set.c:194
SCIP_RETCODE SCIPsetChgParamFixed(SCIP_SET *set, const char *name, SCIP_Bool fixed)
Definition: set.c:3243
void SCIPsetSortConflicthdlrs(SCIP_SET *set)
Definition: set.c:4070
#define SCIP_DEFAULT_PARALLEL_MODE
Definition: set.c:526
SCIP_RETCODE SCIPnlpiFree(SCIP_NLPI **nlpi, SCIP_SET *set)
Definition: nlpi.c:157
#define SCIP_DEFAULT_LP_CONDITIONLIMIT
Definition: set.c:264
#define SCIP_DEFAULT_CONS_DISABLEENFOPS
Definition: set.c:186
SCIP_Real SCIPsetGetSepaMaxCoefRatioRowprep(SCIP_SET *set)
Definition: set.c:5938
#define SCIP_DEFAULT_MISC_USECONSTABLE
Definition: set.c:309
#define SCIP_DEFAULT_SEPA_MAXCUTS
Definition: set.c:515
SCIP_RETCODE SCIPsetIncludeBranchrule(SCIP_SET *set, SCIP_BRANCHRULE *branchrule)
Definition: set.c:4882
#define SCIP_DEFAULT_WRITE_ALLCONSS
Definition: set.c:590
#define SCIP_DEFAULT_RANDOM_PERMUTATIONSEED
Definition: set.c:349
#define SCIP_DEFAULT_READ_DYNAMICROWS
Definition: set.c:580
SCIP_RETCODE SCIPbranchruleInit(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1403
SCIP_RETCODE SCIPbranchruleCopyInclude(SCIP_BRANCHRULE *branchrule, SCIP_SET *set)
Definition: branch.c:1238
#define SCIP_DEFAULT_CONF_RESTARTFAC
Definition: set.c:162
SCIP_Real SCIPsetSumCeil(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6571
#define SCIP_DEFAULT_CONCURRENT_PARAMSETPREFIX
Definition: set.c:552
SCIP_RETCODE SCIPtableExit(SCIP_TABLE *table, SCIP_SET *set)
Definition: table.c:203
SCIP_RETCODE SCIPpresolCopyInclude(SCIP_PRESOL *presol, SCIP_SET *set)
Definition: presol.c:75
SCIP_RETCODE SCIPparamsetAddReal(SCIP_PARAMSET *paramset, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: paramset.c:1577
SCIP_Real SCIPsetSumRound(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6582
SCIP_RETCODE SCIPsetIncludeExprhdlr(SCIP_SET *set, SCIP_EXPRHDLR *exprhdlr)
Definition: set.c:5097
const char * SCIPconflicthdlrGetName(SCIP_CONFLICTHDLR *conflicthdlr)
Definition: conflict.c:763
#define SCIP_DEFAULT_SUMEPSILON
Definition: def.h:184
SCIP_PROP ** props
Definition: struct_set.h:81
SCIP_RETCODE SCIPheurExit(SCIP_HEUR *heur, SCIP_SET *set)
Definition: heur.c:1105
#define SCIP_DEFAULT_LP_DISABLECUTOFF
Definition: set.c:277
#define SCIP_DEFAULT_BARRIERCONVTOL
Definition: def.h:189
#define SCIP_DEFAULT_LIMIT_GAP
Definition: set.c:213
#define SCIP_DEFAULT_SEPA_POOLFREQ
Definition: set.c:520
SCIP_Bool SCIPsetIsSumRelLE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7237
SCIP_RETCODE SCIPeventhdlrExitsol(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
Definition: event.c:261
SCIP_Bool SCIPrelaxIsInitialized(SCIP_RELAX *relax)
Definition: relax.c:689
#define SCIP_DEFAULT_REOPT_SEPAGLBINFSUBTREES
Definition: set.c:437
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
Definition: message.c:609
#define SCIP_DEFAULT_SEPA_MAXCUTSROOT
Definition: set.c:516
#define SCIP_DEFAULT_READ_INITIALCONSS
Definition: set.c:577
SCIP_Bool SCIPsetIsGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6282
SCIP_RETCODE SCIPsetAddLongintParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Longint *valueptr, SCIP_Bool isadvanced, SCIP_Longint defaultvalue, SCIP_Longint minvalue, SCIP_Longint maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: set.c:3044
SCIP_MESSAGEHDLR * messagehdlr
Definition: struct_scip.h:66
#define SCIP_DEFAULT_CONF_DYNAMIC
Definition: set.c:125
#define SCIP_DEFAULT_NODESEL_CHILDSEL
Definition: set.c:357
#define SCIP_Real
Definition: def.h:177
internal methods for problem statistics
const char * SCIPbranchruleGetName(SCIP_BRANCHRULE *branchrule)
Definition: branch.c:1962
SCIP_RETCODE SCIPbranchruleFree(SCIP_BRANCHRULE **branchrule, SCIP_SET *set)
Definition: branch.c:1376
SCIP_RETCODE SCIPsetIncludeReader(SCIP_SET *set, SCIP_READER *reader)
Definition: set.c:3679
SCIP_PRICER ** pricers
Definition: struct_set.h:71
#define EPSROUND(x, eps)
Definition: def.h:212
SCIP_RETCODE SCIPconshdlrExitsol(SCIP_CONSHDLR *conshdlr, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool restart)
Definition: cons.c:2711
enum SCIP_Stage SCIP_STAGE
Definition: type_set.h:50
SCIP_BRANCHRULE * SCIPsetFindBranchrule(SCIP_SET *set, const char *name)
Definition: set.c:4906
#define SCIP_DEFAULT_REOPT_FORCEHEURRESTART
Definition: set.c:428
SCIP_Bool SCIPsetIsFeasPositive(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6725
#define SCIP_DEFAULT_CONF_MAXVARSDETECTIMPLIEDBOUNDS
Definition: set.c:164
SCIP_DEBUGSOLDATA * SCIPsetGetDebugSolData(SCIP_SET *set)
Definition: set.c:5963
SCIP_Real SCIPsetDualfeastol(SCIP_SET *set)
Definition: set.c:6123
SCIP_RETCODE SCIPexprhdlrFree(SCIP_EXPRHDLR **exprhdlr, SCIP_SET *set, BMS_BLKMEM *blkmem)
Definition: expr.c:329
#define SCIP_DEFAULT_BRANCH_MIDPULL
Definition: set.c:79
void SCIPsetSortPricers(SCIP_SET *set)
Definition: set.c:3764
#define SCIP_DEFAULT_SEPA_FILTERCUTPOOLREL
Definition: set.c:501
void SCIPparamsetFree(SCIP_PARAMSET **paramset, BMS_BLKMEM *blkmem)
Definition: paramset.c:1437
SCIP_RETCODE SCIPsetFreeConcsolvers(SCIP_SET *set)
Definition: set.c:4580
#define SCIP_DEFAULT_CONF_CONFLITWEIGHT
Definition: set.c:166
SCIP_RETCODE SCIPbendersInit(SCIP_BENDERS *benders, SCIP_SET *set)
Definition: benders.c:1967
SCIP_RETCODE SCIPparamsetRead(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *filename)
Definition: paramset.c:2630
#define BMSallocMemory(ptr)
Definition: memory.h:111
#define SCIP_INVALID
Definition: def.h:197
#define BMSreallocMemoryArray(ptr, num)
Definition: memory.h:120
int nnlpis
Definition: struct_set.h:143
#define SCIP_DEFAULT_CONF_PREFERBINARY
Definition: set.c:144
SCIP_RETCODE SCIPparamsetSetLongint(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_Longint value)
Definition: paramset.c:1999
#define SCIP_DEFAULT_TIME_NLPIEVAL
Definition: set.c:562
internal methods for constraints and constraint handlers
SCIP_RETCODE SCIPparamsetSetChar(SCIP_PARAMSET *paramset, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, char value)
Definition: paramset.c:2067
SCIP_RETCODE SCIPpresolExitpre(SCIP_PRESOL *presol, SCIP_SET *set)
Definition: presol.c:355
#define SCIP_Longint
Definition: def.h:162
#define SCIP_DEFAULT_DECOMP_BENDERSLABELS
Definition: set.c:401
SCIP_RETCODE SCIPsetSetDefaultIntParam(SCIP_SET *set, const char *name, int defaultvalue)
Definition: set.c:3347
SCIP_RETCODE SCIPsetSetDualfeastol(SCIP_SET *set, SCIP_Real dualfeastol)
Definition: set.c:5852
SCIP_Bool SCIPsetIsDualfeasZero(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6925
void SCIPconflicthdlrEnableOrDisableClocks(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_Bool enable)
Definition: conflict.c:817
SCIP_Bool SCIPsetIsFeasGT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6670
SCIP_Bool SCIPparamsetIsFixed(SCIP_PARAMSET *paramset, const char *name)
Definition: paramset.c:1681
SCIP_RETCODE SCIPsetChgStringParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAM *param, const char *value)
Definition: set.c:3475
SCIP_RETCODE SCIPsetGetLongintParam(SCIP_SET *set, const char *name, SCIP_Longint *value)
Definition: set.c:3187
SCIP_Real SCIPsetRecompfac(SCIP_SET *set)
Definition: set.c:6196
SCIP_RETCODE SCIPsetSetVerbLevel(SCIP_SET *set, SCIP_VERBLEVEL verblevel)
Definition: set.c:5812
#define SCIP_DEFAULT_PRICE_MAXVARSROOT
Definition: set.c:392
SCIP_RETCODE SCIPparamsetGetChar(SCIP_PARAMSET *paramset, const char *name, char *value)
Definition: paramset.c:1843
SCIP_RETCODE SCIPsetChgCharParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_PARAM *param, char value)
Definition: set.c:3437
SCIP_Real SCIPsetEpsilon(SCIP_SET *set)
Definition: set.c:6093
SCIP_STAGE SCIPsetGetStage(SCIP_SET *set)
Definition: set.c:2988
#define SCIP_DEFAULT_MISC_USESYMMETRY
Definition: set.c:333
SCIP_PARAM ** SCIPparamsetGetParams(SCIP_PARAMSET *paramset)
Definition: paramset.c:4284
#define SCIP_DEFAULT_CONF_SCOREFAC
Definition: set.c:158
#define SCIP_DEFAULT_BRANCH_PREFERBINARY
Definition: set.c:75
SCIP_Bool SCIPsetIsUbBetter(SCIP_SET *set, SCIP_Real newub, SCIP_Real oldlb, SCIP_Real oldub)
Definition: set.c:7050
SCIP_Bool SCIPsepaIsInitialized(SCIP_SEPA *sepa)
Definition: sepa.c:1110
int nconshdlrs
Definition: struct_set.h:111
SCIP_Bool SCIPsetIsDualfeasNegative(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6947
#define EPSFLOOR(x, eps)
Definition: def.h:210
#define SCIP_DEFAULT_LP_CHECKSTABILITY
Definition: set.c:263
SCIP_Real SCIPsetSumFrac(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6593
#define SCIP_MINEPSILON
Definition: def.h:196
SCIP_Bool SCIPheurIsInitialized(SCIP_HEUR *heur)
Definition: heur.c:1597
SCIP_RETCODE SCIPparamsetAddBool(SCIP_PARAMSET *paramset, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: paramset.c:1490
SCIP_RETCODE SCIPparamSetReal(SCIP_PARAM *param, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_Real value, SCIP_Bool initialize, SCIP_Bool quiet)
Definition: paramset.c:4680
common defines and data types used in all packages of SCIP
#define SCIP_DEFAULT_VISUAL_VBCFILENAME
Definition: set.c:567
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:430
SCIP_RETCODE SCIPconshdlrFree(SCIP_CONSHDLR **conshdlr, SCIP_SET *set)
Definition: cons.c:2344
SCIP_RETCODE SCIPsetAddRealParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Real *valueptr, SCIP_Bool isadvanced, SCIP_Real defaultvalue, SCIP_Real minvalue, SCIP_Real maxvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: set.c:3068
SCIP_RETCODE SCIPsetExitPlugins(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat)
Definition: set.c:5387
#define SCIP_DEFAULT_VISUAL_DISPSOLS
Definition: set.c:570
internal methods for primal heuristics
#define SCIP_DEFAULT_LP_CHECKDUALFEAS
Definition: set.c:267
SCIP_RETCODE SCIPsetGetBoolParam(SCIP_SET *set, const char *name, SCIP_Bool *value)
Definition: set.c:3159
SCIP_RETCODE SCIPconflicthdlrCopyInclude(SCIP_CONFLICTHDLR *conflicthdlr, SCIP_SET *set)
Definition: conflict.c:380
SCIP_RETCODE SCIPheurExitsol(SCIP_HEUR *heur, SCIP_SET *set)
Definition: heur.c:1165
SCIP_DISP ** disps
Definition: struct_set.h:89
#define SCIP_DEFAULT_SEPA_MAXROUNDSROOT
Definition: set.c:504
SCIP_RETCODE SCIPsetExitprePlugins(SCIP_SET *set, BMS_BLKMEM *blkmem, SCIP_STAT *stat)
Definition: set.c:5537
#define SCIP_DEFAULT_CONF_RECONVLEVELS
Definition: set.c:131
int npresols
Definition: struct_set.h:115
#define SCIP_DEFAULT_CONF_ALLOWLOCAL
Definition: set.c:145
#define SCIP_ALLOC(x)
Definition: def.h:395
#define SCIP_DEFAULT_SEPA_MAXCOEFRATIOFACROWPREP
Definition: set.c:492
#define SCIP_DEFAULT_LP_CHECKPRIMFEAS
Definition: set.c:266
SCIP_RETCODE SCIPsepaExitsol(SCIP_SEPA *sepa, SCIP_SET *set)
Definition: sepa.c:370
#define SCIP_DEFAULT_CONF_SEPAALTPROOFS
Definition: set.c:175
SCIP_Bool SCIPsetIsRelGE(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:7171
const char * SCIPdispGetName(SCIP_DISP *disp)
Definition: disp.c:326
int SCIPnodeselGetStdPriority(SCIP_NODESEL *nodesel)
Definition: nodesel.c:1063
SCIP_RETCODE SCIPsetAddBoolParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, SCIP_Bool *valueptr, SCIP_Bool isadvanced, SCIP_Bool defaultvalue, SCIP_DECL_PARAMCHGD((*paramchgd)), SCIP_PARAMDATA *paramdata)
Definition: set.c:2998
SCIP_Bool SCIPsetIsDualfeasLT(SCIP_SET *set, SCIP_Real val1, SCIP_Real val2)
Definition: set.c:6837
SCIP_RETCODE SCIPsetIncludeConflicthdlr(SCIP_SET *set, SCIP_CONFLICTHDLR *conflicthdlr)
Definition: set.c:4026
void SCIPsetSortSepas(SCIP_SET *set)
Definition: set.c:4291
SCIP_RETCODE SCIPsetSetBoolParam(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_Bool value)
Definition: set.c:3279
SCIP_Bool SCIPsetIsFracIntegral(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6380
#define SCIP_DEFAULT_NLP_DISABLE
Definition: set.c:293
SCIP_RETCODE SCIPnlpiCopyInclude(SCIP_NLPI *sourcenlpi, SCIP_SET *targetset)
Definition: nlpi.c:140
#define SCIP_DEFAULT_CONCURRENT_CHANGECHILDSEL
Definition: set.c:534
#define SCIP_DEFAULT_MEM_ARRAYGROWINIT
Definition: def.h:312
#define SCIP_DEFAULT_PARALLEL_MAXNTHREADS
Definition: set.c:530
#define SCIP_DEFAULT_CONCURRENT_FREQINIT
Definition: set.c:538
#define SCIP_DEFAULT_LP_REFACTORINTERVAL
Definition: set.c:287
SCIP_RETCODE SCIPpresolInitpre(SCIP_PRESOL *presol, SCIP_SET *set)
Definition: presol.c:320
SCIP_RETCODE SCIPsetIncludeDisp(SCIP_SET *set, SCIP_DISP *disp)
Definition: set.c:4956
SCIP_Bool SCIPnodeselIsInitialized(SCIP_NODESEL *nodesel)
Definition: nodesel.c:1200
#define SCIP_DEFAULT_SEPA_MAXADDROUNDS
Definition: set.c:506
SCIP_Real SCIPsetLPFeastolFactor(SCIP_SET *set)
Definition: set.c:6133
#define SCIP_DEFAULT_HISTORY_ALLOWMERGE
Definition: set.c:206
SCIP_CONCSOLVERTYPE * SCIPsetFindConcsolverType(SCIP_SET *set, const char *name)
Definition: set.c:4536
int subscipdepth
Definition: struct_stat.h:208
#define EPSZ(x, eps)
Definition: def.h:207
SCIP_RETCODE SCIPpropExit(SCIP_PROP *prop, SCIP_SET *set)
Definition: prop.c:371
SCIP_RETCODE SCIPpropFree(SCIP_PROP **prop, SCIP_SET *set)
Definition: prop.c:275
SCIP_EVENTHDLR ** eventhdlrs
Definition: struct_set.h:85
#define SCIP_DEFAULT_BRANCH_SUMADJUSTSCORE
Definition: set.c:90
SCIP callable library.
SCIP_RETCODE SCIPcutselInitsol(SCIP_CUTSEL *cutsel, SCIP_SET *set)
Definition: cutsel.c:361
SCIP_Bool SCIPsetIsFeasNegative(SCIP_SET *set, SCIP_Real val)
Definition: set.c:6736
SCIP_RETCODE SCIPpropExitsol(SCIP_PROP *prop, SCIP_SET *set, SCIP_Bool restart)
Definition: prop.c:485
SCIP_RETCODE SCIPeventhdlrInit(SCIP_EVENTHDLR *eventhdlr, SCIP_SET *set)
Definition: event.c:171
#define SCIP_DEFAULT_PSEUDOCOSTDELTA
Definition: def.h:192
void SCIPsetSortBranchrulesName(SCIP_SET *set)
Definition: set.c:4941
#define SCIP_DEFAULT_BRANCH_DIVINGPSCOST
Definition: set.c:83
#define SCIP_DEFAULT_PROP_MAXROUNDS
Definition: set.c:472
char * SCIPconcsolverTypeGetName(SCIP_CONCSOLVERTYPE *concsolvertype)
Definition: concsolver.c:181
SCIP_RETCODE SCIPrelaxExitsol(SCIP_RELAX *relax, SCIP_SET *set)
Definition: relax.c:320
int SCIPsetGetPriceMaxvars(SCIP_SET *set, SCIP_Bool root)
Definition: set.c:5910
internal methods for displaying runtime statistics
void SCIPsetSortPricersName(SCIP_SET *set)
Definition: set.c:3779