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