Scippy

    SCIP

    Solving Constraint Integer Programs

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