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