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