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