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