Scippy

SCIP

Solving Constraint Integer Programs

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