Scippy

    SCIP

    Solving Constraint Integer Programs

    scip_cons.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 scip_cons.c
    26 * @ingroup OTHER_CFILES
    27 * @brief public methods for constraint handler plugins and constraints
    28 * @author Tobias Achterberg
    29 * @author Timo Berthold
    30 * @author Gerald Gamrath
    31 * @author Leona Gottwald
    32 * @author Stefan Heinz
    33 * @author Gregor Hendel
    34 * @author Christopher Hojny
    35 * @author Thorsten Koch
    36 * @author Alexander Martin
    37 * @author Marc Pfetsch
    38 * @author Michael Winkler
    39 * @author Kati Wolter
    40 *
    41 * @todo check all SCIP_STAGE_* switches, and include the new stages TRANSFORMED and INITSOLVE
    42 */
    43
    44/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    45
    46#include "scip/cons.h"
    47#include "scip/debug.h"
    48#include "scip/prob.h"
    49#include "scip/pub_cons.h"
    50#include "scip/pub_message.h"
    51#include "scip/pub_misc.h"
    52#include "scip/scip_cons.h"
    53#include "scip/scip_general.h"
    54#include "scip/scip_mem.h"
    55#include "scip/set.h"
    56#include "scip/struct_cons.h"
    57#include "scip/struct_mem.h"
    58#include "scip/struct_scip.h"
    59#include "scip/struct_set.h"
    60
    61/* In debug mode, the following methods are implemented as function calls to ensure
    62 * type validity.
    63 * In optimized mode, the methods are implemented as defines to improve performance.
    64 * However, we want to have them in the library anyways, so we have to undef the defines.
    65 */
    66
    67#undef SCIPmarkConsPropagate
    68
    69/** creates a constraint handler and includes it in SCIP.
    70 *
    71 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    72 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    73 *
    74 * @pre This method can be called if SCIP is in one of the following stages:
    75 * - \ref SCIP_STAGE_INIT
    76 * - \ref SCIP_STAGE_PROBLEM
    77 *
    78 * @note method has all constraint handler callbacks as arguments and is thus changed every time a new
    79 * callback is added
    80 * in future releases; consider using SCIPincludeConshdlrBasic() and setter functions
    81 * if you seek for a method which is less likely to change in future releases
    82 */
    84 SCIP* scip, /**< SCIP data structure */
    85 const char* name, /**< name of constraint handler */
    86 const char* desc, /**< description of constraint handler */
    87 int sepapriority, /**< priority of the constraint handler for separation */
    88 int enfopriority, /**< priority of the constraint handler for constraint enforcing */
    89 int chckpriority, /**< priority of the constraint handler for checking feasibility (and propagation) */
    90 int sepafreq, /**< frequency for separating cuts; zero means to separate only in the root node */
    91 int propfreq, /**< frequency for propagating domains; zero means only preprocessing propagation */
    92 int eagerfreq, /**< frequency for using all instead of only the useful constraints in separation,
    93 * propagation and enforcement, -1 for no eager evaluations, 0 for first only */
    94 int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
    95 SCIP_Bool delaysepa, /**< should separation method be delayed, if other separators found cuts? */
    96 SCIP_Bool delayprop, /**< should propagation method be delayed, if other propagators found reductions? */
    97 SCIP_Bool needscons, /**< should the constraint handler be skipped, if no constraints are available? */
    98 SCIP_PROPTIMING proptiming, /**< positions in the node solving loop where propagation method of constraint handlers should be executed */
    99 SCIP_PRESOLTIMING presoltiming, /**< timing mask of the constraint handler's presolving method */
    100 SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
    101 SCIP_DECL_CONSFREE ((*consfree)), /**< destructor of constraint handler */
    102 SCIP_DECL_CONSINIT ((*consinit)), /**< initialize constraint handler */
    103 SCIP_DECL_CONSEXIT ((*consexit)), /**< deinitialize constraint handler */
    104 SCIP_DECL_CONSINITPRE ((*consinitpre)), /**< presolving initialization method of constraint handler */
    105 SCIP_DECL_CONSEXITPRE ((*consexitpre)), /**< presolving deinitialization method of constraint handler */
    106 SCIP_DECL_CONSINITSOL ((*consinitsol)), /**< solving process initialization method of constraint handler */
    107 SCIP_DECL_CONSEXITSOL ((*consexitsol)), /**< solving process deinitialization method of constraint handler */
    108 SCIP_DECL_CONSDELETE ((*consdelete)), /**< free specific constraint data */
    109 SCIP_DECL_CONSTRANS ((*constrans)), /**< transform constraint data into data belonging to the transformed problem */
    110 SCIP_DECL_CONSINITLP ((*consinitlp)), /**< initialize LP with relaxations of "initial" constraints */
    111 SCIP_DECL_CONSSEPALP ((*conssepalp)), /**< separate cutting planes for LP solution */
    112 SCIP_DECL_CONSSEPASOL ((*conssepasol)), /**< separate cutting planes for arbitrary primal solution */
    113 SCIP_DECL_CONSENFOLP ((*consenfolp)), /**< enforcing constraints for LP solutions */
    114 SCIP_DECL_CONSENFORELAX ((*consenforelax)), /**< enforcing constraints for relaxation solutions */
    115 SCIP_DECL_CONSENFOPS ((*consenfops)), /**< enforcing constraints for pseudo solutions */
    116 SCIP_DECL_CONSCHECK ((*conscheck)), /**< check feasibility of primal solution */
    117 SCIP_DECL_CONSPROP ((*consprop)), /**< propagate variable domains */
    118 SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method */
    119 SCIP_DECL_CONSRESPROP ((*consresprop)), /**< propagation conflict resolving method */
    120 SCIP_DECL_CONSLOCK ((*conslock)), /**< variable rounding lock method */
    121 SCIP_DECL_CONSACTIVE ((*consactive)), /**< activation notification method */
    122 SCIP_DECL_CONSDEACTIVE((*consdeactive)), /**< deactivation notification method */
    123 SCIP_DECL_CONSENABLE ((*consenable)), /**< enabling notification method */
    124 SCIP_DECL_CONSDISABLE ((*consdisable)), /**< disabling notification method */
    125 SCIP_DECL_CONSDELVARS ((*consdelvars)), /**< variable deletion method */
    126 SCIP_DECL_CONSPRINT ((*consprint)), /**< constraint display method */
    127 SCIP_DECL_CONSCOPY ((*conscopy)), /**< constraint copying method */
    128 SCIP_DECL_CONSPARSE ((*consparse)), /**< constraint parsing method */
    129 SCIP_DECL_CONSGETVARS ((*consgetvars)), /**< constraint get variables method */
    130 SCIP_DECL_CONSGETNVARS((*consgetnvars)), /**< constraint get number of variable method */
    131 SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)), /**< constraint handler diving solution enforcement method */
    132 SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)), /**< constraint permutation symmetry detection graph
    133 * getter method */
    134 SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)), /**< constraint signed permutation symmetry
    135 * detection graph getter method */
    136 SCIP_CONSHDLRDATA* conshdlrdata /**< constraint handler data */
    137 )
    138{
    139 SCIP_CONSHDLR* conshdlr;
    140
    142
    143 /* check whether constraint handler is already present */
    144 if( SCIPfindConshdlr(scip, name) != NULL )
    145 {
    146 SCIPerrorMessage("constraint handler <%s> already included.\n", name);
    147 return SCIP_INVALIDDATA;
    148 }
    149
    150 SCIP_CALL( SCIPconshdlrCreate(&conshdlr, scip->set, scip->messagehdlr, scip->mem->setmem,
    151 name, desc, sepapriority, enfopriority, chckpriority, sepafreq, propfreq, eagerfreq, maxprerounds,
    152 delaysepa, delayprop, needscons, proptiming, presoltiming, conshdlrcopy,
    153 consfree, consinit, consexit, consinitpre, consexitpre, consinitsol, consexitsol,
    154 consdelete, constrans, consinitlp, conssepalp, conssepasol, consenfolp, consenforelax, consenfops, conscheck, consprop,
    155 conspresol, consresprop, conslock, consactive, consdeactive, consenable, consdisable, consdelvars, consprint,
    156 conscopy, consparse, consgetvars, consgetnvars, consgetdivebdchgs, consgetpermsymgraph,
    157 consgetsignedpermsymgraph, conshdlrdata) );
    158 SCIP_CALL( SCIPsetIncludeConshdlr(scip->set, conshdlr) );
    159
    160 return SCIP_OKAY;
    161}
    162
    163/** creates a constraint handler and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
    164 * Optional callbacks can be set via specific setter functions, see SCIPsetConshdlrInit(), SCIPsetConshdlrExit(),
    165 * SCIPsetConshdlrCopy(), SCIPsetConshdlrFree(), SCIPsetConshdlrInitsol(), SCIPsetConshdlrExitsol(),
    166 * SCIPsetConshdlrInitpre(), SCIPsetConshdlrExitpre(), SCIPsetConshdlrPresol(), SCIPsetConshdlrDelete(),
    167 * SCIPsetConshdlrDelvars(), SCIPsetConshdlrInitlp(), SCIPsetConshdlrActive(), SCIPsetConshdlrDeactive(),
    168 * SCIPsetConshdlrEnable(), SCIPsetConshdlrDisable(), SCIPsetConshdlrResprop(), SCIPsetConshdlrTrans(),
    169 * SCIPsetConshdlrPrint(), SCIPsetConshdlrParse(), SCIPsetConshdlrGetVars(), SCIPsetConshdlrGetNVars(), and
    170 * SCIPsetConshdlrGetDiveBdChgs().
    171 *
    172 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    173 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    174 *
    175 * @pre This method can be called if SCIP is in one of the following stages:
    176 * - \ref SCIP_STAGE_INIT
    177 * - \ref SCIP_STAGE_PROBLEM
    178 *
    179 * @note if you want to set all callbacks with a single method call, consider using SCIPincludeConshdlr() instead
    180 */
    182 SCIP* scip, /**< SCIP data structure */
    183 SCIP_CONSHDLR** conshdlrptr, /**< reference to a constraint handler pointer, or NULL */
    184 const char* name, /**< name of constraint handler */
    185 const char* desc, /**< description of constraint handler */
    186 int enfopriority, /**< priority of the constraint handler for constraint enforcing */
    187 int chckpriority, /**< priority of the constraint handler for checking feasibility (and propagation) */
    188 int eagerfreq, /**< frequency for using all instead of only the useful constraints in separation,
    189 * propagation and enforcement, -1 for no eager evaluations, 0 for first only */
    190 SCIP_Bool needscons, /**< should the constraint handler be skipped, if no constraints are available? */
    191 SCIP_DECL_CONSENFOLP ((*consenfolp)), /**< enforcing constraints for LP solutions */
    192 SCIP_DECL_CONSENFOPS ((*consenfops)), /**< enforcing constraints for pseudo solutions */
    193 SCIP_DECL_CONSCHECK ((*conscheck)), /**< check feasibility of primal solution */
    194 SCIP_DECL_CONSLOCK ((*conslock)), /**< variable rounding lock method */
    195 SCIP_CONSHDLRDATA* conshdlrdata /**< constraint handler data */
    196 )
    197{
    198 SCIP_CONSHDLR* conshdlr;
    199
    200 SCIP_CALL( SCIPcheckStage(scip, "SCIPincludeConshdlrBasic", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    201
    202 /* check whether constraint handler is already present */
    203 if( SCIPfindConshdlr(scip, name) != NULL )
    204 {
    205 SCIPerrorMessage("constraint handler <%s> already included.\n", name);
    206 return SCIP_INVALIDDATA;
    207 }
    208
    209 SCIP_CALL( SCIPconshdlrCreate(&conshdlr, scip->set, scip->messagehdlr, scip->mem->setmem,
    210 name, desc, 0, enfopriority, chckpriority, -1, -1, eagerfreq, 0,
    211 FALSE, FALSE, needscons,
    213 NULL,
    215 NULL, NULL, NULL, NULL, NULL, consenfolp, NULL, consenfops, conscheck, NULL,
    216 NULL, NULL, conslock, NULL, NULL, NULL, NULL, NULL, NULL,
    217 NULL, NULL, NULL, NULL, NULL, NULL, NULL, conshdlrdata) );
    218 SCIP_CALL( SCIPsetIncludeConshdlr(scip->set, conshdlr) );
    219
    220 if( conshdlrptr != NULL )
    221 *conshdlrptr = conshdlr;
    222
    223 return SCIP_OKAY;
    224}
    225
    226/** sets all separation related callbacks/parameters of the constraint handler
    227 *
    228 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    229 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    230 *
    231 * @pre This method can be called if SCIP is in one of the following stages:
    232 * - \ref SCIP_STAGE_INIT
    233 * - \ref SCIP_STAGE_PROBLEM
    234 */
    236 SCIP* scip, /**< SCIP data structure */
    237 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    238 SCIP_DECL_CONSSEPALP ((*conssepalp)), /**< separate cutting planes for LP solution */
    239 SCIP_DECL_CONSSEPASOL ((*conssepasol)), /**< separate cutting planes for arbitrary primal solution */
    240 int sepafreq, /**< frequency for separating cuts; zero means to separate only in the root node */
    241 int sepapriority, /**< priority of the constraint handler for separation */
    242 SCIP_Bool delaysepa /**< should separation method be delayed, if other separators found cuts? */
    243 )
    244{
    245 int oldsepapriority;
    246 const char* name;
    248
    249 assert(scip != NULL);
    250 assert(conshdlr != NULL);
    251
    253
    254 oldsepapriority = SCIPconshdlrGetSepaPriority(conshdlr);
    255 SCIPconshdlrSetSepa(conshdlr, conssepalp, conssepasol, sepafreq, sepapriority, delaysepa);
    256
    257 /* change the position of the constraint handler in the constraint handler array w.r.t. its new sepa priority */
    258 if( oldsepapriority != sepapriority )
    259 SCIPsetReinsertConshdlrSepaPrio(scip->set, conshdlr, oldsepapriority);
    260
    261 name = SCIPconshdlrGetName(conshdlr);
    262
    263 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "constraints/%s/sepafreq", name);
    265
    266 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "constraints/%s/delaysepa", name);
    268
    269 return SCIP_OKAY;
    270}
    271
    272/** sets both the propagation callback and the propagation frequency of the constraint handler
    273 *
    274 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    275 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    276 *
    277 * @pre This method can be called if SCIP is in one of the following stages:
    278 * - \ref SCIP_STAGE_INIT
    279 * - \ref SCIP_STAGE_PROBLEM
    280 */
    282 SCIP* scip, /**< SCIP data structure */
    283 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    284 SCIP_DECL_CONSPROP ((*consprop)), /**< propagate variable domains */
    285 int propfreq, /**< frequency for propagating domains; zero means only preprocessing propagation */
    286 SCIP_Bool delayprop, /**< should propagation method be delayed, if other propagators found reductions? */
    287 SCIP_PROPTIMING proptiming /**< positions in the node solving loop where propagation should be executed */
    288 )
    289{
    290 const char* name;
    292
    293 assert(scip != NULL);
    294 assert(conshdlr != NULL);
    295
    297
    298 SCIPconshdlrSetProp(conshdlr, consprop, propfreq, delayprop, proptiming);
    299
    300 name = SCIPconshdlrGetName(conshdlr);
    301
    302 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "constraints/%s/propfreq", name);
    304
    305 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "constraints/%s/proptiming", name);
    306 SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, (int) proptiming) );
    307
    308 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "constraints/%s/delayprop", name);
    310
    311 return SCIP_OKAY;
    312}
    313
    314/** sets relaxation enforcement method of the constraint handler
    315 *
    316 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    317 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    318 *
    319 * @pre This method can be called if SCIP is in one of the following stages:
    320 * - \ref SCIP_STAGE_INIT
    321 * - \ref SCIP_STAGE_PROBLEM
    322 */
    324 SCIP* scip, /**< SCIP data structure */
    325 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    326 SCIP_DECL_CONSENFORELAX ((*consenforelax)) /**< enforcement method for relaxation solution of constraint handler (might be NULL) */
    327 )
    328{
    329 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrEnforelax", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    330
    331 assert(conshdlr != NULL);
    332
    333 SCIPconshdlrSetEnforelax(conshdlr, consenforelax);
    334
    335 return SCIP_OKAY;
    336}
    337
    338/** sets copy method of both the constraint handler and each associated constraint
    339 *
    340 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    341 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    342 *
    343 * @pre This method can be called if SCIP is in one of the following stages:
    344 * - \ref SCIP_STAGE_INIT
    345 * - \ref SCIP_STAGE_PROBLEM
    346 */
    348 SCIP* scip, /**< SCIP data structure */
    349 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    350 SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), /**< copy method of constraint handler or NULL if you don't want to copy your plugin into sub-SCIPs */
    351 SCIP_DECL_CONSCOPY ((*conscopy)) /**< constraint copying method */
    352 )
    353{
    355
    356 assert(conshdlr != NULL);
    357
    358 SCIPconshdlrSetCopy(conshdlr, conshdlrcopy, conscopy);
    359
    360 return SCIP_OKAY;
    361}
    362
    363/** sets destructor method of constraint handler
    364 *
    365 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    366 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    367 *
    368 * @pre This method can be called if SCIP is in one of the following stages:
    369 * - \ref SCIP_STAGE_INIT
    370 * - \ref SCIP_STAGE_PROBLEM
    371 */
    373 SCIP* scip, /**< SCIP data structure */
    374 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    375 SCIP_DECL_CONSFREE ((*consfree)) /**< destructor of constraint handler */
    376 )
    377{
    379
    380 assert(conshdlr != NULL);
    381
    382 SCIPconshdlrSetFree(conshdlr, consfree);
    383
    384 return SCIP_OKAY;
    385}
    386
    387/** sets initialization method of constraint handler
    388 *
    389 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    390 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    391 *
    392 * @pre This method can be called if SCIP is in one of the following stages:
    393 * - \ref SCIP_STAGE_INIT
    394 * - \ref SCIP_STAGE_PROBLEM
    395 */
    397 SCIP* scip, /**< SCIP data structure */
    398 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    399 SCIP_DECL_CONSINIT ((*consinit)) /**< initialize constraint handler */
    400 )
    401{
    403
    404 assert(conshdlr != NULL);
    405
    406 SCIPconshdlrSetInit(conshdlr, consinit);
    407
    408 return SCIP_OKAY;
    409}
    410
    411/** sets deinitialization method of constraint handler
    412 *
    413 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    414 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    415 *
    416 * @pre This method can be called if SCIP is in one of the following stages:
    417 * - \ref SCIP_STAGE_INIT
    418 * - \ref SCIP_STAGE_PROBLEM
    419 */
    421 SCIP* scip, /**< SCIP data structure */
    422 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    423 SCIP_DECL_CONSEXIT ((*consexit)) /**< deinitialize constraint handler */
    424 )
    425{
    427
    428 assert(conshdlr != NULL);
    429
    430 SCIPconshdlrSetExit(conshdlr, consexit);
    431
    432 return SCIP_OKAY;
    433}
    434
    435/** sets solving process initialization method of constraint handler
    436 *
    437 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    438 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    439 *
    440 * @pre This method can be called if SCIP is in one of the following stages:
    441 * - \ref SCIP_STAGE_INIT
    442 * - \ref SCIP_STAGE_PROBLEM
    443 */
    445 SCIP* scip, /**< SCIP data structure */
    446 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    447 SCIP_DECL_CONSINITSOL((*consinitsol)) /**< solving process initialization method of constraint handler */
    448 )
    449{
    450 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrInitsol", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    451
    452 assert(conshdlr != NULL);
    453
    454 SCIPconshdlrSetInitsol(conshdlr, consinitsol);
    455
    456 return SCIP_OKAY;
    457}
    458
    459/** sets solving process deinitialization method of constraint handler
    460 *
    461 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    462 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    463 *
    464 * @pre This method can be called if SCIP is in one of the following stages:
    465 * - \ref SCIP_STAGE_INIT
    466 * - \ref SCIP_STAGE_PROBLEM
    467 */
    469 SCIP* scip, /**< SCIP data structure */
    470 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    471 SCIP_DECL_CONSEXITSOL ((*consexitsol))/**< solving process deinitialization method of constraint handler */
    472 )
    473{
    474 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrExitsol", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    475
    476 assert(conshdlr != NULL);
    477
    478 SCIPconshdlrSetExitsol(conshdlr, consexitsol);
    479
    480 return SCIP_OKAY;
    481}
    482
    483/** sets preprocessing initialization method of constraint handler
    484 *
    485 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    486 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    487 *
    488 * @pre This method can be called if SCIP is in one of the following stages:
    489 * - \ref SCIP_STAGE_INIT
    490 * - \ref SCIP_STAGE_PROBLEM
    491 */
    493 SCIP* scip, /**< SCIP data structure */
    494 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    495 SCIP_DECL_CONSINITPRE((*consinitpre)) /**< preprocessing initialization method of constraint handler */
    496 )
    497{
    498 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrInitpre", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    499
    500 assert(conshdlr != NULL);
    501
    502 SCIPconshdlrSetInitpre(conshdlr, consinitpre);
    503
    504 return SCIP_OKAY;
    505}
    506
    507/** sets preprocessing deinitialization method of constraint handler
    508 *
    509 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    510 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    511 *
    512 * @pre This method can be called if SCIP is in one of the following stages:
    513 * - \ref SCIP_STAGE_INIT
    514 * - \ref SCIP_STAGE_PROBLEM
    515 */
    517 SCIP* scip, /**< SCIP data structure */
    518 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    519 SCIP_DECL_CONSEXITPRE((*consexitpre)) /**< preprocessing deinitialization method of constraint handler */
    520 )
    521{
    522 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrExitpre", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    523
    524 assert(conshdlr != NULL);
    525
    526 SCIPconshdlrSetExitpre(conshdlr, consexitpre);
    527
    528 return SCIP_OKAY;
    529}
    530
    531/** sets presolving method of constraint handler
    532 *
    533 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    534 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    535 *
    536 * @pre This method can be called if SCIP is in one of the following stages:
    537 * - \ref SCIP_STAGE_INIT
    538 * - \ref SCIP_STAGE_PROBLEM
    539 */
    541 SCIP* scip, /**< SCIP data structure */
    542 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    543 SCIP_DECL_CONSPRESOL ((*conspresol)), /**< presolving method of constraint handler */
    544 int maxprerounds, /**< maximal number of presolving rounds the constraint handler participates in (-1: no limit) */
    545 SCIP_PRESOLTIMING presoltiming /**< timing mask of the constraint handler's presolving method */
    546 )
    547{
    548 const char* name;
    550
    551 assert(scip != NULL);
    552 assert(conshdlr != NULL);
    553
    554 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrPresol", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    555
    556 SCIP_CALL( SCIPconshdlrSetPresol(conshdlr, conspresol, maxprerounds, presoltiming) );
    557
    558 name = SCIPconshdlrGetName(conshdlr);
    559
    560 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "constraints/%s/maxprerounds", name);
    561 SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, maxprerounds) );
    562
    563 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "constraints/%s/presoltiming", name);
    564 SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, (int) presoltiming) );
    565
    566 return SCIP_OKAY;
    567}
    568
    569/** sets method of constraint handler to free specific constraint data
    570 *
    571 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    572 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    573 *
    574 * @pre This method can be called if SCIP is in one of the following stages:
    575 * - \ref SCIP_STAGE_INIT
    576 * - \ref SCIP_STAGE_PROBLEM
    577 */
    579 SCIP* scip, /**< SCIP data structure */
    580 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    581 SCIP_DECL_CONSDELETE ((*consdelete)) /**< free specific constraint data */
    582 )
    583{
    584 assert(scip != NULL);
    585 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrDelete", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    586
    587 SCIPconshdlrSetDelete(conshdlr, consdelete);
    588
    589 return SCIP_OKAY;
    590}
    591
    592/** sets method of constraint handler to transform constraint data into data belonging to the transformed problem
    593 *
    594 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    595 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    596 *
    597 * @pre This method can be called if SCIP is in one of the following stages:
    598 * - \ref SCIP_STAGE_INIT
    599 * - \ref SCIP_STAGE_PROBLEM
    600 */
    602 SCIP* scip, /**< SCIP data structure */
    603 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    604 SCIP_DECL_CONSTRANS ((*constrans)) /**< transform constraint data into data belonging to the transformed problem */
    605 )
    606{
    607 assert(scip != NULL);
    608 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrTrans", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    609
    610 SCIPconshdlrSetTrans(conshdlr, constrans);
    611
    612 return SCIP_OKAY;
    613}
    614
    615/** sets method of constraint handler to initialize LP with relaxations of "initial" constraints
    616 *
    617 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    618 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    619 *
    620 * @pre This method can be called if SCIP is in one of the following stages:
    621 * - \ref SCIP_STAGE_INIT
    622 * - \ref SCIP_STAGE_PROBLEM
    623 */
    625 SCIP* scip, /**< SCIP data structure */
    626 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    627 SCIP_DECL_CONSINITLP ((*consinitlp)) /**< initialize LP with relaxations of "initial" constraints */
    628 )
    629{
    630 assert(scip != NULL);
    631 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrInitlp", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    632
    633 SCIPconshdlrSetInitlp(conshdlr, consinitlp);
    634
    635 return SCIP_OKAY;
    636}
    637
    638/** sets propagation conflict resolving method of constraint handler
    639 *
    640 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    641 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    642 *
    643 * @pre This method can be called if SCIP is in one of the following stages:
    644 * - \ref SCIP_STAGE_INIT
    645 * - \ref SCIP_STAGE_PROBLEM
    646 */
    648 SCIP* scip, /**< SCIP data structure */
    649 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    650 SCIP_DECL_CONSRESPROP ((*consresprop)) /**< propagation conflict resolving method */
    651 )
    652{
    653 assert(scip != NULL);
    654 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrResprop", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    655
    656 SCIPconshdlrSetResprop(conshdlr, consresprop);
    657
    658 return SCIP_OKAY;
    659}
    660
    661/** sets activation notification method of constraint handler
    662 *
    663 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    664 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    665 *
    666 * @pre This method can be called if SCIP is in one of the following stages:
    667 * - \ref SCIP_STAGE_INIT
    668 * - \ref SCIP_STAGE_PROBLEM
    669 */
    671 SCIP* scip, /**< SCIP data structure */
    672 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    673 SCIP_DECL_CONSACTIVE ((*consactive)) /**< activation notification method */
    674 )
    675{
    676 assert(scip != NULL);
    677 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrActive", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    678
    679 SCIPconshdlrSetActive(conshdlr, consactive);
    680
    681 return SCIP_OKAY;
    682}
    683
    684/** sets deactivation notification method of constraint handler
    685 *
    686 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    687 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    688 *
    689 * @pre This method can be called if SCIP is in one of the following stages:
    690 * - \ref SCIP_STAGE_INIT
    691 * - \ref SCIP_STAGE_PROBLEM
    692 */
    694 SCIP* scip, /**< SCIP data structure */
    695 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    696 SCIP_DECL_CONSDEACTIVE((*consdeactive)) /**< deactivation notification method */
    697 )
    698{
    699 assert(scip != NULL);
    700 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrDeactive", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    701
    702 SCIPconshdlrSetDeactive(conshdlr, consdeactive);
    703
    704 return SCIP_OKAY;
    705}
    706
    707/** sets enabling notification method of constraint handler
    708 *
    709 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    710 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    711 *
    712 * @pre This method can be called if SCIP is in one of the following stages:
    713 * - \ref SCIP_STAGE_INIT
    714 * - \ref SCIP_STAGE_PROBLEM
    715 */
    717 SCIP* scip, /**< SCIP data structure */
    718 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    719 SCIP_DECL_CONSENABLE ((*consenable)) /**< enabling notification method */
    720 )
    721{
    722 assert(scip != NULL);
    723 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrEnable", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    724
    725 SCIPconshdlrSetEnable(conshdlr, consenable);
    726
    727 return SCIP_OKAY;
    728}
    729
    730/** sets disabling notification method of constraint handler
    731 *
    732 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    733 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    734 *
    735 * @pre This method can be called if SCIP is in one of the following stages:
    736 * - \ref SCIP_STAGE_INIT
    737 * - \ref SCIP_STAGE_PROBLEM
    738 */
    740 SCIP* scip, /**< SCIP data structure */
    741 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    742 SCIP_DECL_CONSDISABLE ((*consdisable)) /**< disabling notification method */
    743 )
    744{
    745 assert(scip != NULL);
    746 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrDisable", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    747
    748 SCIPconshdlrSetDisable(conshdlr, consdisable);
    749
    750 return SCIP_OKAY;
    751}
    752
    753/** sets variable deletion method of constraint handler
    754 *
    755 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    756 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    757 *
    758 * @pre This method can be called if SCIP is in one of the following stages:
    759 * - \ref SCIP_STAGE_INIT
    760 * - \ref SCIP_STAGE_PROBLEM
    761 */
    763 SCIP* scip, /**< SCIP data structure */
    764 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    765 SCIP_DECL_CONSDELVARS ((*consdelvars)) /**< variable deletion method */
    766 )
    767{
    768 assert(scip != NULL);
    769 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrDelvars", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    770
    771 SCIPconshdlrSetDelvars(conshdlr, consdelvars);
    772
    773 return SCIP_OKAY;
    774}
    775
    776/** sets constraint display method of constraint handler
    777 *
    778 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    779 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    780 *
    781 * @pre This method can be called if SCIP is in one of the following stages:
    782 * - \ref SCIP_STAGE_INIT
    783 * - \ref SCIP_STAGE_PROBLEM
    784 */
    786 SCIP* scip, /**< SCIP data structure */
    787 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    788 SCIP_DECL_CONSPRINT ((*consprint)) /**< constraint display method */
    789 )
    790{
    791 assert(scip != NULL);
    792 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrPrint", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    793
    794 SCIPconshdlrSetPrint(conshdlr, consprint);
    795
    796 return SCIP_OKAY;
    797}
    798
    799/** sets constraint parsing method of constraint handler
    800 *
    801 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    802 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    803 *
    804 * @pre This method can be called if SCIP is in one of the following stages:
    805 * - \ref SCIP_STAGE_INIT
    806 * - \ref SCIP_STAGE_PROBLEM
    807 */
    809 SCIP* scip, /**< SCIP data structure */
    810 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    811 SCIP_DECL_CONSPARSE ((*consparse)) /**< constraint parsing method */
    812 )
    813{
    814 assert(scip != NULL);
    815 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrParse", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    816
    817 SCIPconshdlrSetParse(conshdlr, consparse);
    818
    819 return SCIP_OKAY;
    820}
    821
    822/** sets constraint variable getter method of constraint handler
    823 *
    824 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    825 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    826 *
    827 * @pre This method can be called if SCIP is in one of the following stages:
    828 * - \ref SCIP_STAGE_INIT
    829 * - \ref SCIP_STAGE_PROBLEM
    830 */
    832 SCIP* scip, /**< SCIP data structure */
    833 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    834 SCIP_DECL_CONSGETVARS ((*consgetvars)) /**< constraint variable getter method */
    835 )
    836{
    837 assert(scip != NULL);
    838 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrGetVars", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    839
    840 SCIPconshdlrSetGetVars(conshdlr, consgetvars);
    841
    842 return SCIP_OKAY;
    843}
    844
    845/** sets constraint variable number getter method of constraint handler
    846 *
    847 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    848 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    849 *
    850 * @pre This method can be called if SCIP is in one of the following stages:
    851 * - \ref SCIP_STAGE_INIT
    852 * - \ref SCIP_STAGE_PROBLEM
    853 */
    855 SCIP* scip, /**< SCIP data structure */
    856 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    857 SCIP_DECL_CONSGETNVARS((*consgetnvars)) /**< constraint variable number getter method */
    858 )
    859{
    860 assert(scip != NULL);
    861 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrGetNVars", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    862
    863 SCIPconshdlrSetGetNVars(conshdlr, consgetnvars);
    864
    865 return SCIP_OKAY;
    866}
    867
    868/** sets diving bound change method of constraint handler
    869 *
    870 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    871 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    872 *
    873 * @pre This method can be called if SCIP is in one of the following stages:
    874 * - \ref SCIP_STAGE_INIT
    875 * - \ref SCIP_STAGE_PROBLEM
    876 */
    878 SCIP* scip, /**< SCIP data structure */
    879 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    880 SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)) /**< constraint handler diving solution enforcement method */
    881 )
    882{
    883 assert(scip != NULL);
    884 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrGetDiveBdChgs", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    885
    886 SCIPconshdlrSetGetDiveBdChgs(conshdlr, consgetdivebdchgs);
    887
    888 return SCIP_OKAY;
    889}
    890
    891/** sets permutation symmetry detection graph getter method of constraint handler
    892 *
    893 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    894 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    895 *
    896 * @pre This method can be called if SCIP is in one of the following stages:
    897 * - \ref SCIP_STAGE_INIT
    898 * - \ref SCIP_STAGE_PROBLEM
    899 */
    901 SCIP* scip, /**< SCIP data structure */
    902 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    903 SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)) /**< constraint permutation symmetry detection graph
    904 * getter method */
    905 )
    906{
    907 assert(scip != NULL);
    908 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrGetPermsymGraph", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    909
    910 SCIPconshdlrSetGetPermsymGraph(conshdlr, consgetpermsymgraph);
    911
    912 return SCIP_OKAY;
    913}
    914
    915/** sets signed permutation symmetry detection graph getter method of constraint handler
    916 *
    917 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    918 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    919 *
    920 * @pre This method can be called if SCIP is in one of the following stages:
    921 * - \ref SCIP_STAGE_INIT
    922 * - \ref SCIP_STAGE_PROBLEM
    923 */
    925 SCIP* scip, /**< SCIP data structure */
    926 SCIP_CONSHDLR* conshdlr, /**< constraint handler */
    927 SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)) /**< constraint signed permutation symmetry
    928 * detection graph getter method */
    929 )
    930{
    931 assert(scip != NULL);
    932 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConshdlrGetSignedPermsymGraph", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    933
    934 SCIPconshdlrSetGetSignedPermsymGraph(conshdlr, consgetsignedpermsymgraph);
    935
    936 return SCIP_OKAY;
    937}
    938
    939/** returns the constraint handler of the given name, or NULL if not existing */
    941 SCIP* scip, /**< SCIP data structure */
    942 const char* name /**< name of constraint handler */
    943 )
    944{
    945 assert(scip != NULL);
    946 assert(scip->set != NULL);
    947 assert(name != NULL);
    948
    949 return SCIPsetFindConshdlr(scip->set, name);
    950}
    951
    952/** returns the array of currently available constraint handlers */
    954 SCIP* scip /**< SCIP data structure */
    955 )
    956{
    957 assert(scip != NULL);
    958 assert(scip->set != NULL);
    959
    960 return scip->set->conshdlrs;
    961}
    962
    963/** returns the number of currently available constraint handlers */
    965 SCIP* scip /**< SCIP data structure */
    966 )
    967{
    968 assert(scip != NULL);
    969 assert(scip->set != NULL);
    970
    971 return scip->set->nconshdlrs;
    972}
    973
    974/** creates and captures a constraint of the given constraint handler
    975 *
    976 * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may
    977 * be declared feasible even if it violates this particular constraint. This constellation should only be
    978 * used, if no LP or pseudo solution can violate the constraint -- e.g. if a local constraint is redundant due
    979 * to the variable's local bounds.
    980 *
    981 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    982 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    983 *
    984 * @pre This method can be called if @p scip is in one of the following stages:
    985 * - \ref SCIP_STAGE_PROBLEM
    986 * - \ref SCIP_STAGE_TRANSFORMING
    987 * - \ref SCIP_STAGE_INITPRESOLVE
    988 * - \ref SCIP_STAGE_PRESOLVING
    989 * - \ref SCIP_STAGE_EXITPRESOLVE
    990 * - \ref SCIP_STAGE_PRESOLVED
    991 * - \ref SCIP_STAGE_INITSOLVE
    992 * - \ref SCIP_STAGE_SOLVING
    993 * - \ref SCIP_STAGE_EXITSOLVE
    994 *
    995 * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
    996 */
    998 SCIP* scip, /**< SCIP data structure */
    999 SCIP_CONS** cons, /**< pointer to constraint */
    1000 const char* name, /**< name of constraint */
    1001 SCIP_CONSHDLR* conshdlr, /**< constraint handler for this constraint */
    1002 SCIP_CONSDATA* consdata, /**< data for this specific constraint */
    1003 SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
    1004 * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
    1005 SCIP_Bool separate, /**< should the constraint be separated during LP processing?
    1006 * Usually set to TRUE. */
    1007 SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
    1008 * TRUE for model constraints, FALSE for additional, redundant constraints. */
    1009 SCIP_Bool check, /**< should the constraint be checked for feasibility?
    1010 * TRUE for model constraints, FALSE for additional, redundant constraints. */
    1011 SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
    1012 * Usually set to TRUE. */
    1013 SCIP_Bool local, /**< is constraint only valid locally?
    1014 * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
    1015 SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
    1016 * Usually set to FALSE. In column generation applications, set to TRUE if pricing
    1017 * adds coefficients to this constraint. */
    1018 SCIP_Bool dynamic, /**< is constraint subject to aging?
    1019 * Usually set to FALSE. Set to TRUE for own cuts which
    1020 * are separated as constraints. */
    1021 SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
    1022 * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
    1023 SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even
    1024 * if it may be moved to a more global node?
    1025 * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
    1026 )
    1027{
    1028 assert(cons != NULL);
    1029 assert(name != NULL);
    1030 assert(conshdlr != NULL);
    1031
    1032 SCIP_CALL( SCIPcheckStage(scip, "SCIPcreateCons", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE) );
    1033
    1034 switch( scip->set->stage )
    1035 {
    1036 case SCIP_STAGE_PROBLEM:
    1037 SCIP_CALL( SCIPconsCreate(cons, scip->mem->probmem, scip->set, name, conshdlr, consdata,
    1038 initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode, TRUE, TRUE) );
    1039 return SCIP_OKAY;
    1040
    1048 case SCIP_STAGE_SOLVING:
    1050 SCIP_CALL( SCIPconsCreate(cons, scip->mem->probmem, scip->set, name, conshdlr, consdata,
    1051 initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode, FALSE, TRUE) );
    1052 return SCIP_OKAY;
    1053
    1054 default:
    1055 SCIPerrorMessage("invalid SCIP stage <%d>\n", scip->set->stage);
    1056 return SCIP_INVALIDCALL;
    1057 } /*lint !e788*/
    1058}
    1059
    1060/** parses constraint information (in cip format) out of a string; if the parsing process was successful a constraint is
    1061 * creates and captures;
    1062 *
    1063 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1064 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1065 *
    1066 * @pre This method can be called if @p scip is in one of the following stages:
    1067 * - \ref SCIP_STAGE_PROBLEM
    1068 * - \ref SCIP_STAGE_TRANSFORMING
    1069 * - \ref SCIP_STAGE_INITPRESOLVE
    1070 * - \ref SCIP_STAGE_PRESOLVING
    1071 * - \ref SCIP_STAGE_EXITPRESOLVE
    1072 * - \ref SCIP_STAGE_PRESOLVED
    1073 * - \ref SCIP_STAGE_SOLVING
    1074 * - \ref SCIP_STAGE_EXITSOLVE
    1075 *
    1076 * @warning If a constraint is marked to be checked for feasibility but not to be enforced, a LP or pseudo solution may
    1077 * be declared feasible even if it violates this particular constraint. This constellation should only be
    1078 * used, if no LP or pseudo solution can violate the constraint -- e.g. if a local constraint is redundant due
    1079 * to the variable's local bounds.
    1080 */
    1082 SCIP* scip, /**< SCIP data structure */
    1083 SCIP_CONS** cons, /**< pointer to store constraint */
    1084 const char* str, /**< string to parse for constraint */
    1085 SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP?
    1086 * Usually set to TRUE. Set to FALSE for 'lazy constraints'. */
    1087 SCIP_Bool separate, /**< should the constraint be separated during LP processing?
    1088 * Usually set to TRUE. */
    1089 SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
    1090 * TRUE for model constraints, FALSE for additional, redundant constraints. */
    1091 SCIP_Bool check, /**< should the constraint be checked for feasibility?
    1092 * TRUE for model constraints, FALSE for additional, redundant constraints. */
    1093 SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
    1094 * Usually set to TRUE. */
    1095 SCIP_Bool local, /**< is constraint only valid locally?
    1096 * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
    1097 SCIP_Bool modifiable, /**< is constraint modifiable (subject to column generation)?
    1098 * Usually set to FALSE. In column generation applications, set to TRUE if pricing
    1099 * adds coefficients to this constraint. */
    1100 SCIP_Bool dynamic, /**< is constraint subject to aging?
    1101 * Usually set to FALSE. Set to TRUE for own cuts which
    1102 * are separated as constraints. */
    1103 SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
    1104 * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
    1105 SCIP_Bool stickingatnode, /**< should the constraint always be kept at the node where it was added, even
    1106 * if it may be moved to a more global node?
    1107 * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
    1108 SCIP_Bool* success /**< pointer to store if the paring process was successful */
    1109 )
    1110{
    1111 assert(cons != NULL);
    1112
    1114
    1115 SCIP_CALL( SCIPconsParse(cons, scip->set, scip->messagehdlr, str,
    1116 initial, separate, enforce, check, propagate, local, modifiable, dynamic, removable, stickingatnode, success) );
    1117
    1118 return SCIP_OKAY;
    1119}
    1120
    1121/** increases usage counter of constraint
    1122 *
    1123 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1124 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1125 *
    1126 * @pre This method can be called if @p scip is in one of the following stages:
    1127 * - \ref SCIP_STAGE_PROBLEM
    1128 * - \ref SCIP_STAGE_TRANSFORMING
    1129 * - \ref SCIP_STAGE_TRANSFORMED
    1130 * - \ref SCIP_STAGE_INITPRESOLVE
    1131 * - \ref SCIP_STAGE_PRESOLVING
    1132 * - \ref SCIP_STAGE_EXITPRESOLVE
    1133 * - \ref SCIP_STAGE_PRESOLVED
    1134 * - \ref SCIP_STAGE_INITSOLVE
    1135 * - \ref SCIP_STAGE_SOLVING
    1136 * - \ref SCIP_STAGE_SOLVED
    1137 */
    1139 SCIP* scip, /**< SCIP data structure */
    1140 SCIP_CONS* cons /**< constraint to capture */
    1141 )
    1142{
    1143 SCIP_CALL( SCIPcheckStage(scip, "SCIPcaptureCons", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE) );
    1144
    1145 assert( cons->scip == scip );
    1146
    1147 SCIPconsCapture(cons);
    1148
    1149 return SCIP_OKAY;
    1150}
    1151
    1152/** decreases usage counter of constraint, if the usage pointer reaches zero the constraint gets freed
    1153 *
    1154 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1155 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1156 *
    1157 * @pre This method can be called if @p scip is in one of the following stages:
    1158 * - \ref SCIP_STAGE_PROBLEM
    1159 * - \ref SCIP_STAGE_TRANSFORMING
    1160 * - \ref SCIP_STAGE_TRANSFORMED
    1161 * - \ref SCIP_STAGE_INITPRESOLVE
    1162 * - \ref SCIP_STAGE_PRESOLVING
    1163 * - \ref SCIP_STAGE_EXITPRESOLVE
    1164 * - \ref SCIP_STAGE_PRESOLVED
    1165 * - \ref SCIP_STAGE_INITSOLVE
    1166 * - \ref SCIP_STAGE_SOLVING
    1167 * - \ref SCIP_STAGE_SOLVED
    1168 * - \ref SCIP_STAGE_EXITSOLVE
    1169 * - \ref SCIP_STAGE_FREETRANS
    1170 *
    1171 * @note the pointer of the constraint will be NULLed
    1172 */
    1174 SCIP* scip, /**< SCIP data structure */
    1175 SCIP_CONS** cons /**< pointer to constraint */
    1176 )
    1177{
    1178 assert(cons != NULL);
    1179 assert(*cons != NULL);
    1180
    1181 SCIP_CALL( SCIPcheckStage(scip, "SCIPreleaseCons", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE) );
    1182
    1183 switch( scip->set->stage )
    1184 {
    1185 case SCIP_STAGE_PROBLEM:
    1186 SCIP_CALL( SCIPconsRelease(cons, scip->mem->probmem, scip->set) );
    1187 return SCIP_OKAY;
    1188
    1196 case SCIP_STAGE_SOLVING:
    1197 case SCIP_STAGE_SOLVED:
    1200 if( SCIPconsIsOriginal(*cons) && (*cons)->nuses == 1 && (*cons)->transorigcons != NULL )
    1201 {
    1202 SCIPerrorMessage("cannot release last use of original constraint while an associated transformed constraint exists\n");
    1203 return SCIP_INVALIDCALL;
    1204 }
    1205 SCIP_CALL( SCIPconsRelease(cons, scip->mem->probmem, scip->set) );
    1206 return SCIP_OKAY;
    1207
    1208 default:
    1209 SCIPerrorMessage("invalid SCIP stage <%d>\n", scip->set->stage);
    1210 return SCIP_INVALIDCALL;
    1211 } /*lint !e788*/
    1212}
    1213
    1214/** change constraint name
    1215 *
    1216 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1217 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1218 *
    1219 * @pre This method can be called if @p scip is in one of the following stages:
    1220 * - \ref SCIP_STAGE_PROBLEM
    1221 *
    1222 * @note to get the current name of a constraint, use SCIPconsGetName() from pub_cons.h
    1223 */
    1225 SCIP* scip, /**< SCIP data structure */
    1226 SCIP_CONS* cons, /**< constraint */
    1227 const char* name /**< new name of constraint */
    1228 )
    1229{
    1231
    1232 assert( cons->scip == scip );
    1233
    1235 {
    1236 SCIPerrorMessage("constraint names can only be changed in problem creation stage\n");
    1237 SCIPABORT();
    1238 return SCIP_INVALIDCALL; /*lint !e527*/
    1239 }
    1240
    1241 /* remove constraint's name from the namespace if the constraint was already added */
    1242 if( SCIPconsIsAdded(cons) )
    1243 {
    1244 SCIP_CALL( SCIPprobRemoveConsName(scip->origprob, cons) );
    1245 }
    1246
    1247 /* change constraint name */
    1248 SCIP_CALL( SCIPconsChgName(cons, SCIPblkmem(scip), name) );
    1249
    1250 /* add constraint's name to the namespace if the constraint was already added */
    1251 if( SCIPconsIsAdded(cons) )
    1252 {
    1253 SCIP_CALL( SCIPprobAddConsName(scip->origprob, cons) );
    1254 }
    1255
    1256 return SCIP_OKAY;
    1257}
    1258
    1259/** sets the initial flag of the given constraint
    1260 *
    1261 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1262 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1263 *
    1264 * @pre This method can be called if @p scip is in one of the following stages:
    1265 * - \ref SCIP_STAGE_PROBLEM
    1266 * - \ref SCIP_STAGE_TRANSFORMING
    1267 * - \ref SCIP_STAGE_PRESOLVING
    1268 * - \ref SCIP_STAGE_PRESOLVED
    1269 * - \ref SCIP_STAGE_SOLVING
    1270 */
    1272 SCIP* scip, /**< SCIP data structure */
    1273 SCIP_CONS* cons, /**< constraint */
    1274 SCIP_Bool initial /**< new value */
    1275 )
    1276{
    1277 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsInitial", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1278
    1279 SCIP_CALL( SCIPconsSetInitial(cons, scip->set, scip->stat, initial) );
    1280
    1281 return SCIP_OKAY;
    1282}
    1283
    1284/** sets the separate flag of the given constraint
    1285 *
    1286 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1287 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1288 *
    1289 * @pre This method can be called if @p scip is in one of the following stages:
    1290 * - \ref SCIP_STAGE_PROBLEM
    1291 * - \ref SCIP_STAGE_TRANSFORMING
    1292 * - \ref SCIP_STAGE_PRESOLVING
    1293 * - \ref SCIP_STAGE_PRESOLVED
    1294 * - \ref SCIP_STAGE_SOLVING
    1295 */
    1297 SCIP* scip, /**< SCIP data structure */
    1298 SCIP_CONS* cons, /**< constraint */
    1299 SCIP_Bool separate /**< new value */
    1300 )
    1301{
    1302 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsSeparated", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1303
    1305
    1306 return SCIP_OKAY;
    1307}
    1308
    1309/** sets the enforce flag of the given constraint
    1310 *
    1311 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1312 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1313 *
    1314 * @pre This method can be called if @p scip is in one of the following stages:
    1315 * - \ref SCIP_STAGE_PROBLEM
    1316 * - \ref SCIP_STAGE_TRANSFORMING
    1317 * - \ref SCIP_STAGE_PRESOLVING
    1318 * - \ref SCIP_STAGE_PRESOLVED
    1319 * - \ref SCIP_STAGE_SOLVING
    1320 */
    1322 SCIP* scip, /**< SCIP data structure */
    1323 SCIP_CONS* cons, /**< constraint */
    1324 SCIP_Bool enforce /**< new value */
    1325 )
    1326{
    1327 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsEnforced", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1328
    1329 SCIP_CALL( SCIPconsSetEnforced(cons, scip->set, enforce) );
    1330
    1331 return SCIP_OKAY;
    1332}
    1333
    1334/** sets the check flag of the given constraint
    1335 *
    1336 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1337 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1338 *
    1339 * @pre This method can be called if @p scip is in one of the following stages:
    1340 * - \ref SCIP_STAGE_PROBLEM
    1341 * - \ref SCIP_STAGE_TRANSFORMING
    1342 * - \ref SCIP_STAGE_PRESOLVING
    1343 * - \ref SCIP_STAGE_PRESOLVED
    1344 * - \ref SCIP_STAGE_SOLVING
    1345 */
    1347 SCIP* scip, /**< SCIP data structure */
    1348 SCIP_CONS* cons, /**< constraint */
    1349 SCIP_Bool check /**< new value */
    1350 )
    1351{
    1352 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsChecked", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1353
    1354 SCIP_CALL( SCIPconsSetChecked(cons, scip->set, check) );
    1355
    1356 return SCIP_OKAY;
    1357}
    1358
    1359/** sets the propagate flag of the given constraint
    1360 *
    1361 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1362 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1363 *
    1364 * @pre This method can be called if @p scip is in one of the following stages:
    1365 * - \ref SCIP_STAGE_PROBLEM
    1366 * - \ref SCIP_STAGE_TRANSFORMING
    1367 * - \ref SCIP_STAGE_PRESOLVING
    1368 * - \ref SCIP_STAGE_PRESOLVED
    1369 * - \ref SCIP_STAGE_SOLVING
    1370 */
    1372 SCIP* scip, /**< SCIP data structure */
    1373 SCIP_CONS* cons, /**< constraint */
    1374 SCIP_Bool propagate /**< new value */
    1375 )
    1376{
    1377 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsPropagated", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1378
    1379 SCIP_CALL( SCIPconsSetPropagated(cons, scip->set, propagate) );
    1380
    1381 return SCIP_OKAY;
    1382}
    1383
    1384/** sets the local flag of the given constraint
    1385 *
    1386 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1387 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1388 *
    1389 * @pre This method can be called if @p scip is in one of the following stages:
    1390 * - \ref SCIP_STAGE_PROBLEM
    1391 * - \ref SCIP_STAGE_TRANSFORMING
    1392 * - \ref SCIP_STAGE_INITPRESOLVE
    1393 * - \ref SCIP_STAGE_PRESOLVING
    1394 * - \ref SCIP_STAGE_PRESOLVED
    1395 * - \ref SCIP_STAGE_INITSOLVE
    1396 * - \ref SCIP_STAGE_SOLVING
    1397 */
    1399 SCIP* scip, /**< SCIP data structure */
    1400 SCIP_CONS* cons, /**< constraint */
    1401 SCIP_Bool local /**< new value */
    1402 )
    1403{
    1404 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsLocal", FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1405
    1406 SCIPconsSetLocal(cons, local);
    1407
    1408 return SCIP_OKAY;
    1409}
    1410
    1411/** sets the modifiable flag of the given constraint
    1412 *
    1413 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1414 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1415 *
    1416 * @pre This method can be called if @p scip is in one of the following stages:
    1417 * - \ref SCIP_STAGE_PROBLEM
    1418 * - \ref SCIP_STAGE_TRANSFORMING
    1419 * - \ref SCIP_STAGE_PRESOLVING
    1420 * - \ref SCIP_STAGE_PRESOLVED
    1421 * - \ref SCIP_STAGE_SOLVING
    1422 * - \ref SCIP_STAGE_EXITSOLVE
    1423 */
    1425 SCIP* scip, /**< SCIP data structure */
    1426 SCIP_CONS* cons, /**< constraint */
    1427 SCIP_Bool modifiable /**< new value */
    1428 )
    1429{
    1430 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsModifiable", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE) );
    1431
    1432 SCIPconsSetModifiable(cons, modifiable);
    1433
    1434 return SCIP_OKAY;
    1435}
    1436
    1437/** sets the dynamic flag of the given constraint
    1438 *
    1439 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1440 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1441 *
    1442 * @pre This method can be called if @p scip is in one of the following stages:
    1443 * - \ref SCIP_STAGE_PROBLEM
    1444 * - \ref SCIP_STAGE_TRANSFORMING
    1445 * - \ref SCIP_STAGE_PRESOLVING
    1446 * - \ref SCIP_STAGE_PRESOLVED
    1447 * - \ref SCIP_STAGE_SOLVING
    1448 */
    1450 SCIP* scip, /**< SCIP data structure */
    1451 SCIP_CONS* cons, /**< constraint */
    1452 SCIP_Bool dynamic /**< new value */
    1453 )
    1454{
    1455 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsDynamic", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1456
    1457 SCIPconsSetDynamic(cons, dynamic);
    1458
    1459 return SCIP_OKAY;
    1460}
    1461
    1462/** sets the removable flag of the given constraint
    1463 *
    1464 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1465 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1466 *
    1467 * @pre This method can be called if @p scip is in one of the following stages:
    1468 * - \ref SCIP_STAGE_PROBLEM
    1469 * - \ref SCIP_STAGE_TRANSFORMING
    1470 * - \ref SCIP_STAGE_PRESOLVING
    1471 * - \ref SCIP_STAGE_PRESOLVED
    1472 * - \ref SCIP_STAGE_SOLVING
    1473 */
    1475 SCIP* scip, /**< SCIP data structure */
    1476 SCIP_CONS* cons, /**< constraint */
    1477 SCIP_Bool removable /**< new value */
    1478 )
    1479{
    1480 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsRemovable", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1481
    1482 SCIPconsSetRemovable(cons, removable);
    1483
    1484 return SCIP_OKAY;
    1485}
    1486
    1487/** sets the stickingatnode flag of the given constraint
    1488 *
    1489 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1490 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1491 *
    1492 * @pre This method can be called if @p scip is in one of the following stages:
    1493 * - \ref SCIP_STAGE_PROBLEM
    1494 * - \ref SCIP_STAGE_TRANSFORMING
    1495 * - \ref SCIP_STAGE_PRESOLVING
    1496 * - \ref SCIP_STAGE_PRESOLVED
    1497 * - \ref SCIP_STAGE_SOLVING
    1498 */
    1500 SCIP* scip, /**< SCIP data structure */
    1501 SCIP_CONS* cons, /**< constraint */
    1502 SCIP_Bool stickingatnode /**< new value */
    1503 )
    1504{
    1505 SCIP_CALL( SCIPcheckStage(scip, "SCIPsetConsStickingAtNode", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1506
    1507 SCIPconsSetStickingAtNode(cons, stickingatnode);
    1508
    1509 return SCIP_OKAY;
    1510}
    1511
    1512/** updates the flags of the first constraint according to the ones of the second constraint
    1513 *
    1514 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1515 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1516 *
    1517 * @pre This method can be called if @p scip is in one of the following stages:
    1518 * - \ref SCIP_STAGE_PROBLEM
    1519 * - \ref SCIP_STAGE_TRANSFORMING
    1520 * - \ref SCIP_STAGE_PRESOLVING
    1521 * - \ref SCIP_STAGE_PRESOLVED
    1522 * - \ref SCIP_STAGE_SOLVING
    1523 */
    1525 SCIP* scip, /**< SCIP data structure */
    1526 SCIP_CONS* cons0, /**< constraint that should stay */
    1527 SCIP_CONS* cons1 /**< constraint that should be deleted */
    1528 )
    1529{
    1530 SCIP_CALL( SCIPcheckStage(scip, "SCIPupdateConsFlags", FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1531
    1532 if( SCIPconsIsInitial(cons1) )
    1533 {
    1535 }
    1536 if( SCIPconsIsSeparated(cons1) )
    1537 {
    1539 }
    1540 if( SCIPconsIsEnforced(cons1) )
    1541 {
    1543 }
    1544 if( SCIPconsIsChecked(cons1) )
    1545 {
    1547 }
    1548 if( SCIPconsIsPropagated(cons1) )
    1549 {
    1551 }
    1552 if( !SCIPconsIsDynamic(cons1) )
    1553 {
    1555 }
    1556 if( !SCIPconsIsRemovable(cons1) )
    1557 {
    1559 }
    1560 if( SCIPconsIsStickingAtNode(cons1) )
    1561 {
    1563 }
    1564
    1565 return SCIP_OKAY;
    1566}
    1567
    1568/** gets and captures transformed constraint of a given constraint; if the constraint is not yet transformed,
    1569 * a new transformed constraint for this constraint is created
    1570 *
    1571 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1572 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1573 *
    1574 * @pre This method can be called if @p scip is in one of the following stages:
    1575 * - \ref SCIP_STAGE_TRANSFORMING
    1576 * - \ref SCIP_STAGE_TRANSFORMED
    1577 * - \ref SCIP_STAGE_INITPRESOLVE
    1578 * - \ref SCIP_STAGE_PRESOLVING
    1579 * - \ref SCIP_STAGE_EXITPRESOLVE
    1580 * - \ref SCIP_STAGE_PRESOLVED
    1581 * - \ref SCIP_STAGE_INITSOLVE
    1582 * - \ref SCIP_STAGE_SOLVING
    1583 */
    1585 SCIP* scip, /**< SCIP data structure */
    1586 SCIP_CONS* cons, /**< constraint to get/create transformed constraint for */
    1587 SCIP_CONS** transcons /**< pointer to store the transformed constraint */
    1588 )
    1589{
    1590 assert(transcons != NULL);
    1591 assert(cons->scip == scip);
    1592
    1593 SCIP_CALL( SCIPcheckStage(scip, "SCIPtransformCons", FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1594
    1595 if( SCIPconsIsTransformed(cons) )
    1596 {
    1597 *transcons = cons;
    1598 SCIPconsCapture(*transcons);
    1599 }
    1600 else
    1601 {
    1602 SCIP_CALL( SCIPconsTransform(cons, scip->mem->probmem, scip->set, transcons) );
    1603 }
    1604
    1605 return SCIP_OKAY;
    1606}
    1607
    1608/** gets and captures transformed constraints for an array of constraints;
    1609 * if a constraint in the array is not yet transformed, a new transformed constraint for this constraint is created;
    1610 * it is possible to call this method with conss == transconss
    1611 *
    1612 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1613 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1614 *
    1615 * @pre This method can be called if @p scip is in one of the following stages:
    1616 * - \ref SCIP_STAGE_TRANSFORMING
    1617 * - \ref SCIP_STAGE_TRANSFORMED
    1618 * - \ref SCIP_STAGE_INITPRESOLVE
    1619 * - \ref SCIP_STAGE_PRESOLVING
    1620 * - \ref SCIP_STAGE_EXITPRESOLVE
    1621 * - \ref SCIP_STAGE_PRESOLVED
    1622 * - \ref SCIP_STAGE_INITSOLVE
    1623 * - \ref SCIP_STAGE_SOLVING
    1624 */
    1626 SCIP* scip, /**< SCIP data structure */
    1627 int nconss, /**< number of constraints to get/create transformed constraints for */
    1628 SCIP_CONS** conss, /**< array with constraints to get/create transformed constraints for */
    1629 SCIP_CONS** transconss /**< array to store the transformed constraints */
    1630 )
    1631{
    1632 int c;
    1633
    1634 assert(nconss == 0 || conss != NULL);
    1635 assert(nconss == 0 || transconss != NULL);
    1636
    1637 SCIP_CALL( SCIPcheckStage(scip, "SCIPtransformConss", FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    1638
    1639 for( c = 0; c < nconss; ++c )
    1640 {
    1641 if( SCIPconsIsTransformed(conss[c]) )
    1642 {
    1643 transconss[c] = conss[c];
    1644 SCIPconsCapture(transconss[c]);
    1645 }
    1646 else
    1647 {
    1648 SCIP_CALL( SCIPconsTransform(conss[c], scip->mem->probmem, scip->set, &transconss[c]) );
    1649 }
    1650 }
    1651
    1652 return SCIP_OKAY;
    1653}
    1654
    1655/** gets corresponding transformed constraint of a given constraint;
    1656 * returns NULL as transcons, if transformed constraint is not yet existing
    1657 *
    1658 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1659 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1660 *
    1661 * @pre This method can be called if @p scip is in one of the following stages:
    1662 * - \ref SCIP_STAGE_TRANSFORMING
    1663 * - \ref SCIP_STAGE_TRANSFORMED
    1664 * - \ref SCIP_STAGE_INITPRESOLVE
    1665 * - \ref SCIP_STAGE_PRESOLVING
    1666 * - \ref SCIP_STAGE_EXITPRESOLVE
    1667 * - \ref SCIP_STAGE_PRESOLVED
    1668 * - \ref SCIP_STAGE_INITSOLVE
    1669 * - \ref SCIP_STAGE_SOLVING
    1670 * - \ref SCIP_STAGE_SOLVED
    1671 * - \ref SCIP_STAGE_EXITSOLVE
    1672 * - \ref SCIP_STAGE_FREETRANS
    1673 */
    1675 SCIP* scip, /**< SCIP data structure */
    1676 SCIP_CONS* cons, /**< constraint to get the transformed constraint for */
    1677 SCIP_CONS** transcons /**< pointer to store the transformed constraint */
    1678 )
    1679{
    1680 assert(transcons != NULL);
    1681 assert(cons->scip == scip);
    1682
    1683 SCIP_CALL( SCIPcheckStage(scip, "SCIPgetTransformedCons", FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE) );
    1684
    1685 if( SCIPconsIsTransformed(cons) )
    1686 *transcons = cons;
    1687 else
    1688 *transcons = SCIPconsGetTransformed(cons);
    1689
    1690 return SCIP_OKAY;
    1691}
    1692
    1693/** gets corresponding transformed constraints for an array of constraints;
    1694 * stores NULL in a transconss slot, if the transformed constraint is not yet existing;
    1695 * it is possible to call this method with conss == transconss, but remember that constraints that are not
    1696 * yet transformed will be replaced with NULL
    1697 *
    1698 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1699 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1700 *
    1701 * @pre This method can be called if @p scip is in one of the following stages:
    1702 * - \ref SCIP_STAGE_TRANSFORMING
    1703 * - \ref SCIP_STAGE_TRANSFORMED
    1704 * - \ref SCIP_STAGE_INITPRESOLVE
    1705 * - \ref SCIP_STAGE_PRESOLVING
    1706 * - \ref SCIP_STAGE_EXITPRESOLVE
    1707 * - \ref SCIP_STAGE_PRESOLVED
    1708 * - \ref SCIP_STAGE_INITSOLVE
    1709 * - \ref SCIP_STAGE_SOLVING
    1710 * - \ref SCIP_STAGE_SOLVED
    1711 * - \ref SCIP_STAGE_EXITSOLVE
    1712 * - \ref SCIP_STAGE_FREETRANS
    1713 */
    1715 SCIP* scip, /**< SCIP data structure */
    1716 int nconss, /**< number of constraints to get the transformed constraints for */
    1717 SCIP_CONS** conss, /**< constraints to get the transformed constraints for */
    1718 SCIP_CONS** transconss /**< array to store the transformed constraints */
    1719 )
    1720{
    1721 int c;
    1722
    1723 assert(nconss == 0 || conss != NULL);
    1724 assert(nconss == 0 || transconss != NULL);
    1725
    1726 SCIP_CALL( SCIPcheckStage(scip, "SCIPgetTransformedConss", FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE) );
    1727
    1728 for( c = 0; c < nconss; ++c )
    1729 {
    1730 if( SCIPconsIsTransformed(conss[c]) )
    1731 transconss[c] = conss[c];
    1732 else
    1733 transconss[c] = SCIPconsGetTransformed(conss[c]);
    1734 }
    1735
    1736 return SCIP_OKAY;
    1737}
    1738
    1739/** adds given value to age of constraint, but age can never become negative;
    1740 * should be called
    1741 * - in constraint separation, if no cut was found for this constraint,
    1742 * - in constraint enforcing, if constraint was feasible, and
    1743 * - in constraint propagation, if no domain reduction was deduced;
    1744 *
    1745 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1746 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1747 *
    1748 * @pre This method can be called if @p scip is in one of the following stages:
    1749 * - \ref SCIP_STAGE_TRANSFORMED
    1750 * - \ref SCIP_STAGE_PRESOLVING
    1751 * - \ref SCIP_STAGE_PRESOLVED
    1752 * - \ref SCIP_STAGE_SOLVING
    1753 * - \ref SCIP_STAGE_SOLVED
    1754 */
    1756 SCIP* scip, /**< SCIP data structure */
    1757 SCIP_CONS* cons, /**< constraint */
    1758 SCIP_Real deltaage /**< value to add to the constraint's age */
    1759 )
    1760{
    1762
    1763 SCIP_CALL( SCIPconsAddAge(cons, scip->mem->probmem, scip->set, scip->stat, scip->transprob, deltaage, scip->reopt) );
    1764
    1765 return SCIP_OKAY;
    1766}
    1767
    1768/** increases age of constraint by 1.0;
    1769 * should be called
    1770 * - in constraint separation, if no cut was found for this constraint,
    1771 * - in constraint enforcing, if constraint was feasible, and
    1772 * - in constraint propagation, if no domain reduction was deduced;
    1773 *
    1774 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1775 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1776 *
    1777 * @pre This method can be called if @p scip is in one of the following stages:
    1778 * - \ref SCIP_STAGE_TRANSFORMED
    1779 * - \ref SCIP_STAGE_PRESOLVING
    1780 * - \ref SCIP_STAGE_PRESOLVED
    1781 * - \ref SCIP_STAGE_SOLVING
    1782 * - \ref SCIP_STAGE_SOLVED
    1783 */
    1785 SCIP* scip, /**< SCIP data structure */
    1786 SCIP_CONS* cons /**< constraint */
    1787 )
    1788{
    1790
    1791 SCIP_CALL( SCIPconsIncAge(cons, scip->mem->probmem, scip->set, scip->stat, scip->transprob, scip->reopt) );
    1792
    1793 return SCIP_OKAY;
    1794}
    1795
    1796/** resets age of constraint to zero;
    1797 * should be called
    1798 * - in constraint separation, if a cut was found for this constraint,
    1799 * - in constraint enforcing, if the constraint was violated, and
    1800 * - in constraint propagation, if a domain reduction was deduced;
    1801 *
    1802 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1803 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1804 *
    1805 * @pre This method can be called if @p scip is in one of the following stages:
    1806 * - \ref SCIP_STAGE_TRANSFORMED
    1807 * - \ref SCIP_STAGE_PRESOLVING
    1808 * - \ref SCIP_STAGE_PRESOLVED
    1809 * - \ref SCIP_STAGE_SOLVING
    1810 * - \ref SCIP_STAGE_SOLVED
    1811 */
    1813 SCIP* scip, /**< SCIP data structure */
    1814 SCIP_CONS* cons /**< constraint */
    1815 )
    1816{
    1818
    1819 SCIP_CALL( SCIPconsResetAge(cons, scip->set) );
    1820
    1821 return SCIP_OKAY;
    1822}
    1823
    1824/** enables constraint's separation, propagation, and enforcing capabilities
    1825 *
    1826 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1827 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1828 *
    1829 * @pre This method can be called if @p scip is in one of the following stages:
    1830 * - \ref SCIP_STAGE_TRANSFORMED
    1831 * - \ref SCIP_STAGE_PRESOLVING
    1832 * - \ref SCIP_STAGE_PRESOLVED
    1833 * - \ref SCIP_STAGE_INITSOLVE
    1834 * - \ref SCIP_STAGE_SOLVING
    1835 * - \ref SCIP_STAGE_SOLVED
    1836 */
    1838 SCIP* scip, /**< SCIP data structure */
    1839 SCIP_CONS* cons /**< constraint */
    1840 )
    1841{
    1843
    1844 SCIP_CALL( SCIPconsEnable(cons, scip->set, scip->stat) );
    1845
    1846 return SCIP_OKAY;
    1847}
    1848
    1849/** disables constraint's separation, propagation, and enforcing capabilities, s.t. the constraint is not propagated,
    1850 * separated, and enforced anymore until it is enabled again with a call to SCIPenableCons();
    1851 * in contrast to SCIPdelConsLocal() and SCIPdelConsNode(), the disabling is not associated to a node in the tree and
    1852 * does not consume memory; therefore, the constraint is neither automatically enabled on leaving the node nor
    1853 * automatically disabled again on entering the node again;
    1854 * note that the constraints enforcing capabilities are necessary for the solution's feasibility, if the constraint
    1855 * is a model constraint; that means, you must be sure that the constraint cannot be violated in the current subtree,
    1856 * and you have to enable it again manually by calling SCIPenableCons(), if this subtree is left (e.g. by using
    1857 * an appropriate event handler that watches the corresponding variables' domain changes)
    1858 *
    1859 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1860 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1861 *
    1862 * @pre This method can be called if @p scip is in one of the following stages:
    1863 * - \ref SCIP_STAGE_TRANSFORMED
    1864 * - \ref SCIP_STAGE_INITPRESOLVE
    1865 * - \ref SCIP_STAGE_PRESOLVING
    1866 * - \ref SCIP_STAGE_PRESOLVED
    1867 * - \ref SCIP_STAGE_INITSOLVE
    1868 * - \ref SCIP_STAGE_SOLVING
    1869 * - \ref SCIP_STAGE_SOLVED
    1870 */
    1872 SCIP* scip, /**< SCIP data structure */
    1873 SCIP_CONS* cons /**< constraint */
    1874 )
    1875{
    1876 SCIP_CALL( SCIPcheckStage(scip, "SCIPdisableCons", FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE) );
    1877
    1878 SCIP_CALL( SCIPconsDisable(cons, scip->set, scip->stat) );
    1879
    1880 return SCIP_OKAY;
    1881}
    1882
    1883/** enables constraint's separation capabilities
    1884 *
    1885 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1886 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1887 *
    1888 * @pre This method can be called if @p scip is in one of the following stages:
    1889 * - \ref SCIP_STAGE_TRANSFORMED
    1890 * - \ref SCIP_STAGE_PRESOLVING
    1891 * - \ref SCIP_STAGE_PRESOLVED
    1892 * - \ref SCIP_STAGE_INITSOLVE
    1893 * - \ref SCIP_STAGE_SOLVING
    1894 * - \ref SCIP_STAGE_SOLVED
    1895 */
    1897 SCIP* scip, /**< SCIP data structure */
    1898 SCIP_CONS* cons /**< constraint */
    1899 )
    1900{
    1901 SCIP_CALL( SCIPcheckStage(scip, "SCIPenableConsSeparation", FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE) );
    1902
    1904
    1905 return SCIP_OKAY;
    1906}
    1907
    1908/** disables constraint's separation capabilities s.t. the constraint is not separated anymore until the separation
    1909 * is enabled again with a call to SCIPenableConsSeparation(); in contrast to SCIPdelConsLocal() and SCIPdelConsNode(),
    1910 * the disabling is not associated to a node in the tree and does not consume memory; therefore, the constraint
    1911 * is neither automatically enabled on leaving the node nor automatically disabled again on entering the node again
    1912 *
    1913 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1914 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1915 *
    1916 * @pre This method can be called if @p scip is in one of the following stages:
    1917 * - \ref SCIP_STAGE_TRANSFORMED
    1918 * - \ref SCIP_STAGE_PRESOLVING
    1919 * - \ref SCIP_STAGE_PRESOLVED
    1920 * - \ref SCIP_STAGE_INITSOLVE
    1921 * - \ref SCIP_STAGE_SOLVING
    1922 * - \ref SCIP_STAGE_SOLVED
    1923 */
    1925 SCIP* scip, /**< SCIP data structure */
    1926 SCIP_CONS* cons /**< constraint */
    1927 )
    1928{
    1929 SCIP_CALL( SCIPcheckStage(scip, "SCIPdisableConsSeparation", FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE) );
    1930
    1932
    1933 return SCIP_OKAY;
    1934}
    1935
    1936/** enables constraint's propagation capabilities
    1937 *
    1938 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1939 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1940 *
    1941 * @pre This method can be called if @p scip is in one of the following stages:
    1942 * - \ref SCIP_STAGE_TRANSFORMED
    1943 * - \ref SCIP_STAGE_INITPRESOLVE
    1944 * - \ref SCIP_STAGE_PRESOLVING
    1945 * - \ref SCIP_STAGE_EXITPRESOLVE
    1946 * - \ref SCIP_STAGE_PRESOLVED
    1947 * - \ref SCIP_STAGE_INITSOLVE
    1948 * - \ref SCIP_STAGE_SOLVING
    1949 * - \ref SCIP_STAGE_SOLVED
    1950 */
    1952 SCIP* scip, /**< SCIP data structure */
    1953 SCIP_CONS* cons /**< constraint */
    1954 )
    1955{
    1956 SCIP_CALL( SCIPcheckStage(scip, "SCIPenableConsPropagation", FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE) );
    1957
    1959
    1960 return SCIP_OKAY;
    1961}
    1962
    1963/** disables constraint's propagation capabilities s.t. the constraint is not propagated anymore until the propagation
    1964 * is enabled again with a call to SCIPenableConsPropagation(); in contrast to SCIPdelConsLocal() and SCIPdelConsNode(),
    1965 * the disabling is not associated to a node in the tree and does not consume memory; therefore, the constraint
    1966 * is neither automatically enabled on leaving the node nor automatically disabled again on entering the node again
    1967 *
    1968 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1969 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1970 *
    1971 * @pre This method can be called if @p scip is in one of the following stages:
    1972 * - \ref SCIP_STAGE_TRANSFORMED
    1973 * - \ref SCIP_STAGE_INITPRESOLVE
    1974 * - \ref SCIP_STAGE_PRESOLVING
    1975 * - \ref SCIP_STAGE_EXITPRESOLVE
    1976 * - \ref SCIP_STAGE_PRESOLVED
    1977 * - \ref SCIP_STAGE_INITSOLVE
    1978 * - \ref SCIP_STAGE_SOLVING
    1979 * - \ref SCIP_STAGE_SOLVED
    1980 */
    1982 SCIP* scip, /**< SCIP data structure */
    1983 SCIP_CONS* cons /**< constraint */
    1984 )
    1985{
    1986 SCIP_CALL( SCIPcheckStage(scip, "SCIPdisableConsPropagation", FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE) );
    1987
    1989
    1990 return SCIP_OKAY;
    1991}
    1992
    1993#undef SCIPmarkConsPropagate
    1994
    1995/** marks constraint to be propagated
    1996 *
    1997 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1998 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1999 *
    2000 * @pre This method can be called if @p scip is in one of the following stages:
    2001 * - \ref SCIP_STAGE_TRANSFORMING
    2002 * - \ref SCIP_STAGE_TRANSFORMED
    2003 * - \ref SCIP_STAGE_INITPRESOLVE
    2004 * - \ref SCIP_STAGE_PRESOLVING
    2005 * - \ref SCIP_STAGE_EXITPRESOLVE
    2006 * - \ref SCIP_STAGE_PRESOLVED
    2007 * - \ref SCIP_STAGE_INITSOLVE
    2008 * - \ref SCIP_STAGE_SOLVING
    2009 * - \ref SCIP_STAGE_SOLVED
    2010 * - \ref SCIP_STAGE_EXITSOLVE
    2011 *
    2012 * @note if a constraint is marked to be propagated, the age of the constraint will be ignored for propagation
    2013 */
    2015 SCIP* scip, /**< SCIP data structure */
    2016 SCIP_CONS* cons /**< constraint */
    2017 )
    2018{
    2019 SCIP_CALL( SCIPcheckStage(scip, "SCIPmarkConsPropagate", FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE) );
    2020
    2021 SCIP_CALL( SCIPconsMarkPropagate(cons, scip->set) );
    2022
    2023 assert(!SCIPconsIsEnabled(cons) || SCIPconsIsMarkedPropagate(cons));
    2024
    2025 return SCIP_OKAY;
    2026}
    2027
    2028/** unmarks the constraint to be propagated
    2029 *
    2030 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2031 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2032 *
    2033 * @pre This method can be called if @p scip is in one of the following stages:
    2034 * - \ref SCIP_STAGE_TRANSFORMED
    2035 * - \ref SCIP_STAGE_PRESOLVING
    2036 * - \ref SCIP_STAGE_EXITPRESOLVE
    2037 * - \ref SCIP_STAGE_PRESOLVED
    2038 * - \ref SCIP_STAGE_INITSOLVE
    2039 * - \ref SCIP_STAGE_SOLVING
    2040 * - \ref SCIP_STAGE_SOLVED
    2041 */
    2043 SCIP* scip, /**< SCIP data structure */
    2044 SCIP_CONS* cons /**< constraint */
    2045 )
    2046{
    2047 SCIP_CALL( SCIPcheckStage(scip, "SCIPunmarkConsPropagate", FALSE, FALSE, FALSE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE) );
    2048
    2049 SCIP_CALL( SCIPconsUnmarkPropagate(cons, scip->set) );
    2050
    2051 assert(!SCIPconsIsEnabled(cons) || !SCIPconsIsMarkedPropagate(cons));
    2052
    2053 return SCIP_OKAY;
    2054}
    2055
    2056/** adds given values to lock status of type @p locktype of the constraint and updates the rounding locks of the involved variables
    2057 *
    2058 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2059 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2060 *
    2061 * @pre This method can be called if @p scip is in one of the following stages:
    2062 * - \ref SCIP_STAGE_PROBLEM
    2063 * - \ref SCIP_STAGE_TRANSFORMING
    2064 * - \ref SCIP_STAGE_INITPRESOLVE
    2065 * - \ref SCIP_STAGE_PRESOLVING
    2066 * - \ref SCIP_STAGE_EXITPRESOLVE
    2067 * - \ref SCIP_STAGE_INITSOLVE
    2068 * - \ref SCIP_STAGE_SOLVING
    2069 * - \ref SCIP_STAGE_EXITSOLVE
    2070 * - \ref SCIP_STAGE_FREETRANS
    2071 */
    2073 SCIP* scip, /**< SCIP data structure */
    2074 SCIP_CONS* cons, /**< constraint */
    2075 SCIP_LOCKTYPE locktype, /**< type of the variable locks */
    2076 int nlockspos, /**< increase in number of rounding locks for constraint */
    2077 int nlocksneg /**< increase in number of rounding locks for constraint's negation */
    2078 )
    2079{
    2080 SCIP_CALL( SCIPcheckStage(scip, "SCIPaddConsLocksType", FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE) );
    2081
    2082 SCIP_CALL( SCIPconsAddLocks(cons, scip->set, locktype, nlockspos, nlocksneg) );
    2083
    2084 return SCIP_OKAY;
    2085}
    2086
    2087/** adds given values to lock status of the constraint and updates the rounding locks of the involved variables
    2088 *
    2089 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2090 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2091 *
    2092 * @pre This method can be called if @p scip is in one of the following stages:
    2093 * - \ref SCIP_STAGE_PROBLEM
    2094 * - \ref SCIP_STAGE_TRANSFORMING
    2095 * - \ref SCIP_STAGE_INITPRESOLVE
    2096 * - \ref SCIP_STAGE_PRESOLVING
    2097 * - \ref SCIP_STAGE_EXITPRESOLVE
    2098 * - \ref SCIP_STAGE_INITSOLVE
    2099 * - \ref SCIP_STAGE_SOLVING
    2100 * - \ref SCIP_STAGE_EXITSOLVE
    2101 * - \ref SCIP_STAGE_FREETRANS
    2102 *
    2103 * @note This methods always adds locks of type model
    2104 */
    2106 SCIP* scip, /**< SCIP data structure */
    2107 SCIP_CONS* cons, /**< constraint */
    2108 int nlockspos, /**< increase in number of rounding locks for constraint */
    2109 int nlocksneg /**< increase in number of rounding locks for constraint's negation */
    2110 )
    2111{
    2112 SCIP_CALL( SCIPcheckStage(scip, "SCIPaddConsLocks", FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE) );
    2113
    2114 SCIP_CALL( SCIPaddConsLocksType(scip, cons, SCIP_LOCKTYPE_MODEL, nlockspos, nlocksneg) );
    2115
    2116 return SCIP_OKAY;
    2117}
    2118
    2119/** checks single constraint for feasibility of the given solution
    2120 *
    2121 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2122 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2123 *
    2124 * @pre This method can be called if @p scip is in one of the following stages:
    2125 * - \ref SCIP_STAGE_PROBLEM
    2126 * - \ref SCIP_STAGE_TRANSFORMED
    2127 * - \ref SCIP_STAGE_INITPRESOLVE
    2128 * - \ref SCIP_STAGE_PRESOLVING
    2129 * - \ref SCIP_STAGE_EXITPRESOLVE
    2130 * - \ref SCIP_STAGE_PRESOLVED
    2131 * - \ref SCIP_STAGE_INITSOLVE
    2132 * - \ref SCIP_STAGE_SOLVING
    2133 * - \ref SCIP_STAGE_SOLVED
    2134 */
    2136 SCIP* scip, /**< SCIP data structure */
    2137 SCIP_CONS* cons, /**< constraint to check */
    2138 SCIP_SOL* sol, /**< primal CIP solution */
    2139 SCIP_Bool checkintegrality, /**< Has integrality to be checked? */
    2140 SCIP_Bool checklprows, /**< Do constraints represented by rows in the current LP have to be checked? */
    2141 SCIP_Bool printreason, /**< Should the reason for the violation be printed? */
    2142 SCIP_RESULT* result /**< pointer to store the result of the callback method */
    2143 )
    2144{
    2146
    2147 SCIP_CALL( SCIPconsCheck(cons, scip->set, sol, checkintegrality, checklprows, printreason, result) );
    2148
    2149 return SCIP_OKAY;
    2150}
    2151
    2152/** enforces single constraint for a given pseudo solution
    2153 *
    2154 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2155 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2156 *
    2157 * @pre This method can be called if @p scip is in one of the following stages:
    2158 * - \ref SCIP_STAGE_SOLVING
    2159 *
    2160 * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
    2161 * added to SCIP beforehand.
    2162 */
    2164 SCIP* scip, /**< SCIP data structure */
    2165 SCIP_CONS* cons, /**< constraint to enforce */
    2166 SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
    2167 SCIP_Bool objinfeasible, /**< is the solution infeasible anyway due to violating lower objective bound? */
    2168 SCIP_RESULT* result /**< pointer to store the result of the callback method */
    2169 )
    2170{
    2171 assert(scip != NULL);
    2172 assert(cons != NULL);
    2173 assert(!SCIPconsIsAdded(cons));
    2174 assert(result != NULL);
    2175
    2177
    2178 SCIP_CALL( SCIPconsEnfops(cons, scip->set, solinfeasible, objinfeasible, result) );
    2179
    2180 return SCIP_OKAY;
    2181}
    2182
    2183/** enforces single constraint for a given LP solution
    2184 *
    2185 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2186 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2187 *
    2188 * @pre This method can be called if @p scip is in one of the following stages:
    2189 * - \ref SCIP_STAGE_SOLVING
    2190 *
    2191 * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
    2192 * added to SCIP beforehand.
    2193 */
    2195 SCIP* scip, /**< SCIP data structure */
    2196 SCIP_CONS* cons, /**< constraint to enforce */
    2197 SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
    2198 SCIP_RESULT* result /**< pointer to store the result of the callback method */
    2199 )
    2200{
    2201 assert(scip != NULL);
    2202 assert(cons != NULL);
    2203 assert(!SCIPconsIsAdded(cons));
    2204 assert(result != NULL);
    2205
    2207
    2208 SCIP_CALL( SCIPconsEnfolp(cons, scip->set, solinfeasible, result) );
    2209
    2210 return SCIP_OKAY;
    2211}
    2212
    2213/** enforces single constraint for a given relaxation solution
    2214 *
    2215 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2216 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2217 *
    2218 * @pre This method can be called if @p scip is in one of the following stages:
    2219 * - \ref SCIP_STAGE_SOLVING
    2220 *
    2221 * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
    2222 * added to SCIP beforehand.
    2223 */
    2225 SCIP* scip, /**< SCIP data structure */
    2226 SCIP_CONS* cons, /**< constraint to enforce */
    2227 SCIP_SOL* sol, /**< solution to enforce */
    2228 SCIP_Bool solinfeasible, /**< was the solution already declared infeasible by a constraint handler? */
    2229 SCIP_RESULT* result /**< pointer to store the result of the callback method */
    2230 )
    2231{
    2232 assert(scip != NULL);
    2233 assert(cons != NULL);
    2234 assert(!SCIPconsIsAdded(cons));
    2235 assert(sol != NULL);
    2236 assert(result != NULL);
    2237
    2239
    2240 SCIP_CALL( SCIPconsEnforelax(cons, scip->set, sol, solinfeasible, result) );
    2241
    2242 return SCIP_OKAY;
    2243}
    2244
    2245/** calls LP initialization method for single constraint
    2246 *
    2247 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2248 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2249 *
    2250 * @pre This method can be called if @p scip is in one of the following stages:
    2251 * - \ref SCIP_STAGE_SOLVING
    2252 *
    2253 * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
    2254 * added to SCIP beforehand.
    2255 */
    2257 SCIP* scip, /**< SCIP data structure */
    2258 SCIP_CONS* cons, /**< constraint to initialize */
    2259 SCIP_Bool* infeasible /**< pointer to store whether infeasibility was detected while building the LP */
    2260 )
    2261{
    2262 assert(scip != NULL);
    2263 assert(cons != NULL);
    2264 assert(!SCIPconsIsAdded(cons));
    2265
    2267
    2268 SCIP_CALL( SCIPconsInitlp(cons, scip->set, infeasible) );
    2269
    2270 return SCIP_OKAY;
    2271}
    2272
    2273/** calls separation method of single constraint for LP solution
    2274 *
    2275 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2276 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2277 *
    2278 * @pre This method can be called if @p scip is in one of the following stages:
    2279 * - \ref SCIP_STAGE_SOLVING
    2280 *
    2281 * @note This is an advanced method and should be used with caution.
    2282 */
    2284 SCIP* scip, /**< SCIP data structure */
    2285 SCIP_CONS* cons, /**< constraint to separate */
    2286 SCIP_RESULT* result /**< pointer to store the result of the separation call */
    2287 )
    2288{
    2289 assert(scip != NULL);
    2290 assert(cons != NULL);
    2291 assert(result != NULL);
    2292
    2294
    2295 SCIP_CALL( SCIPconsSepalp(cons, scip->set, result) );
    2296
    2297 return SCIP_OKAY;
    2298}
    2299
    2300/** calls separation method of single constraint for given primal solution
    2301 *
    2302 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2303 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2304 *
    2305 * @pre This method can be called if @p scip is in one of the following stages:
    2306 * - \ref SCIP_STAGE_SOLVING
    2307 *
    2308 * @note This is an advanced method and should be used with caution.
    2309 */
    2311 SCIP* scip, /**< SCIP data structure */
    2312 SCIP_CONS* cons, /**< constraint to separate */
    2313 SCIP_SOL* sol, /**< primal solution that should be separated*/
    2314 SCIP_RESULT* result /**< pointer to store the result of the separation call */
    2315 )
    2316{
    2317 assert(scip != NULL);
    2318 assert(cons != NULL);
    2319 assert(sol != NULL);
    2320 assert(result != NULL);
    2321
    2323
    2324 SCIP_CALL( SCIPconsSepasol(cons, scip->set, sol, result) );
    2325
    2326 return SCIP_OKAY;
    2327}
    2328
    2329/** calls domain propagation method of single constraint
    2330 *
    2331 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2332 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2333 *
    2334 * @pre This method can be called if @p scip is in one of the following stages:
    2335 * - \ref SCIP_STAGE_PRESOLVING
    2336 * - \ref SCIP_STAGE_SOLVING
    2337 *
    2338 * @note This is an advanced method and should be used with caution.
    2339 */
    2341 SCIP* scip, /**< SCIP data structure */
    2342 SCIP_CONS* cons, /**< constraint to propagate */
    2343 SCIP_PROPTIMING proptiming, /**< current point in the node solving loop */
    2344 SCIP_RESULT* result /**< pointer to store the result of the callback method */
    2345 )
    2346{
    2347 assert(scip != NULL);
    2348 assert(cons != NULL);
    2349 assert(result != NULL);
    2350
    2352
    2353 SCIP_CALL( SCIPconsProp(cons, scip->set, proptiming, result) );
    2354
    2355 return SCIP_OKAY;
    2356}
    2357
    2358/** resolves propagation conflict of single constraint
    2359 *
    2360 *
    2361 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2362 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2363 *
    2364 * @pre This method can be called if @p scip is in one of the following stages:
    2365 * - \ref SCIP_STAGE_PRESOLVING
    2366 * - \ref SCIP_STAGE_SOLVING
    2367 *
    2368 * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
    2369 * added to SCIP beforehand.
    2370 */
    2372 SCIP* scip, /**< SCIP data structure */
    2373 SCIP_CONS* cons, /**< constraint to resolve conflict for */
    2374 SCIP_VAR* infervar, /**< the conflict variable whose bound change has to be resolved */
    2375 int inferinfo, /**< the user information passed to the corresponding SCIPinferVarLbCons() or SCIPinferVarUbCons() call */
    2376 SCIP_BOUNDTYPE boundtype, /**< the type of the changed bound (lower or upper bound) */
    2377 SCIP_BDCHGIDX* bdchgidx, /**< the index of the bound change, representing the point of time where the change took place */
    2378 SCIP_Real relaxedbd, /**< the relaxed bound which is sufficient to be explained */
    2379 SCIP_RESULT* result /**< pointer to store the result of the callback method */
    2380 )
    2381{
    2382 assert(scip != NULL);
    2383 assert(cons != NULL);
    2384 assert(!SCIPconsIsAdded(cons));
    2385 assert(infervar != NULL);
    2386 assert(bdchgidx != NULL);
    2387 assert(result != NULL);
    2388
    2390
    2391 SCIP_CALL( SCIPconsResprop(cons, scip->set, infervar, inferinfo, boundtype, bdchgidx, relaxedbd, result) );
    2392
    2393 return SCIP_OKAY;
    2394}
    2395
    2396/** presolves of single constraint
    2397 *
    2398 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2399 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2400 *
    2401 * @pre This method can be called if @p scip is in one of the following stages:
    2402 * - \ref SCIP_STAGE_PRESOLVING
    2403 *
    2404 * @note This is an advanced method and should be used with caution.
    2405 */
    2407 SCIP* scip, /**< SCIP data structure */
    2408 SCIP_CONS* cons, /**< constraint to presolve */
    2409 int nrounds, /**< number of presolving rounds already done */
    2410 SCIP_PRESOLTIMING presoltiming, /**< presolving timing(s) to be performed */
    2411 int nnewfixedvars, /**< number of variables fixed since the last call to the presolving method */
    2412 int nnewaggrvars, /**< number of variables aggregated since the last call to the presolving method */
    2413 int nnewchgvartypes, /**< number of variable type changes since the last call to the presolving method */
    2414 int nnewchgbds, /**< number of variable bounds tightened since the last call to the presolving method */
    2415 int nnewholes, /**< number of domain holes added since the last call to the presolving method */
    2416 int nnewdelconss, /**< number of deleted constraints since the last call to the presolving method */
    2417 int nnewaddconss, /**< number of added constraints since the last call to the presolving method */
    2418 int nnewupgdconss, /**< number of upgraded constraints since the last call to the presolving method */
    2419 int nnewchgcoefs, /**< number of changed coefficients since the last call to the presolving method */
    2420 int nnewchgsides, /**< number of changed left or right hand sides since the last call to the presolving method */
    2421 int* nfixedvars, /**< pointer to count total number of variables fixed of all presolvers */
    2422 int* naggrvars, /**< pointer to count total number of variables aggregated of all presolvers */
    2423 int* nchgvartypes, /**< pointer to count total number of variable type changes of all presolvers */
    2424 int* nchgbds, /**< pointer to count total number of variable bounds tightened of all presolvers */
    2425 int* naddholes, /**< pointer to count total number of domain holes added of all presolvers */
    2426 int* ndelconss, /**< pointer to count total number of deleted constraints of all presolvers */
    2427 int* naddconss, /**< pointer to count total number of added constraints of all presolvers */
    2428 int* nupgdconss, /**< pointer to count total number of upgraded constraints of all presolvers */
    2429 int* nchgcoefs, /**< pointer to count total number of changed coefficients of all presolvers */
    2430 int* nchgsides, /**< pointer to count total number of changed left/right hand sides of all presolvers */
    2431 SCIP_RESULT* result /**< pointer to store the result of the callback method */
    2432 )
    2433{
    2434 assert(scip != NULL);
    2435 assert(cons != NULL);
    2436 assert(nfixedvars != NULL);
    2437 assert(naggrvars != NULL);
    2438 assert(nchgvartypes != NULL);
    2439 assert(nchgbds != NULL);
    2440 assert(naddholes != NULL);
    2441 assert(ndelconss != NULL);
    2442 assert(naddconss != NULL);
    2443 assert(nupgdconss != NULL);
    2444 assert(nchgcoefs != NULL);
    2445 assert(nchgsides != NULL);
    2446 assert(result != NULL);
    2447
    2449
    2450 SCIP_CALL( SCIPconsPresol(cons, scip->set, nrounds, presoltiming, nnewfixedvars, nnewaggrvars, nnewchgvartypes, nnewchgbds, nnewholes,
    2451 nnewdelconss, nnewaddconss, nnewupgdconss, nnewchgcoefs, nnewchgsides, nfixedvars, naggrvars, nchgvartypes,
    2452 nchgbds, naddholes, ndelconss, naddconss, nupgdconss, nchgcoefs, nchgsides , result) );
    2453
    2454 return SCIP_OKAY;
    2455}
    2456
    2457/** calls constraint activation notification method of single constraint
    2458 *
    2459 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2460 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2461 *
    2462 * @pre This method can be called if @p scip is in one of the following stages:
    2463 * - \ref SCIP_STAGE_TRANSFORMING
    2464 *
    2465 * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
    2466 * added to SCIP beforehand.
    2467 */
    2469 SCIP* scip, /**< SCIP data structure */
    2470 SCIP_CONS* cons /**< constraint to notify */
    2471 )
    2472{
    2473 assert(scip != NULL);
    2474 assert(cons != NULL);
    2475 assert(!SCIPconsIsAdded(cons));
    2476 assert(!SCIPconsIsDeleted(cons));
    2477
    2479
    2480 SCIP_CALL( SCIPconsActive(cons, scip->set) );
    2481
    2482 return SCIP_OKAY;
    2483}
    2484
    2485/** calls constraint deactivation notification method of single constraint
    2486 *
    2487 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2488 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2489 *
    2490 * @pre This method can be called if @p scip is in one of the following stages:
    2491 * - \ref SCIP_STAGE_PRESOLVING
    2492 * - \ref SCIP_STAGE_SOLVING
    2493 *
    2494 * @note This is an advanced method and should be used with caution. It may only be called for constraints that were not
    2495 * added to SCIP beforehand.
    2496 */
    2498 SCIP* scip, /**< SCIP data structure */
    2499 SCIP_CONS* cons /**< constraint to notify */
    2500 )
    2501{
    2502 assert(scip != NULL);
    2503 assert(cons != NULL);
    2504 assert(!SCIPconsIsAdded(cons));
    2505
    2507
    2508 SCIP_CALL( SCIPconsDeactive(cons, scip->set) );
    2509
    2510 return SCIP_OKAY;
    2511}
    2512
    2513/** outputs constraint information to file stream via the message handler system
    2514 *
    2515 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2516 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2517 *
    2518 * @pre This method can be called if @p scip is in one of the following stages:
    2519 * - \ref SCIP_STAGE_PROBLEM
    2520 * - \ref SCIP_STAGE_TRANSFORMING
    2521 * - \ref SCIP_STAGE_TRANSFORMED
    2522 * - \ref SCIP_STAGE_INITPRESOLVE
    2523 * - \ref SCIP_STAGE_PRESOLVING
    2524 * - \ref SCIP_STAGE_EXITPRESOLVE
    2525 * - \ref SCIP_STAGE_PRESOLVED
    2526 * - \ref SCIP_STAGE_INITSOLVE
    2527 * - \ref SCIP_STAGE_SOLVING
    2528 * - \ref SCIP_STAGE_SOLVED
    2529 * - \ref SCIP_STAGE_EXITSOLVE
    2530 * - \ref SCIP_STAGE_FREETRANS
    2531 *
    2532 * @note If the message handler is set to a NULL pointer nothing will be printed.
    2533 * @note The file stream will not be flushed directly, this can be achieved by calling SCIPinfoMessage() printing a
    2534 * newline character.
    2535 */
    2537 SCIP* scip, /**< SCIP data structure */
    2538 SCIP_CONS* cons, /**< constraint */
    2539 FILE* file /**< output file (or NULL for standard output) */
    2540 )
    2541{
    2542 SCIP_CALL( SCIPcheckStage(scip, "SCIPprintCons", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE) );
    2543
    2544 SCIP_CALL( SCIPconsPrint(cons, scip->set, scip->messagehdlr, file) );
    2545
    2546 return SCIP_OKAY;
    2547}
    2548
    2549/** method to collect the variables of a constraint
    2550 *
    2551 * If the number of variables is greater than the available slots in the variable array, nothing happens except that
    2552 * the success point is set to FALSE. With the method SCIPgetConsNVars() it is possible to get the number of variables
    2553 * a constraint has in its scope.
    2554 *
    2555 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2556 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2557 *
    2558 * @pre This method can be called if @p scip is in one of the following stages:
    2559 * - \ref SCIP_STAGE_PROBLEM
    2560 * - \ref SCIP_STAGE_TRANSFORMING
    2561 * - \ref SCIP_STAGE_TRANSFORMED
    2562 * - \ref SCIP_STAGE_INITPRESOLVE
    2563 * - \ref SCIP_STAGE_PRESOLVING
    2564 * - \ref SCIP_STAGE_EXITPRESOLVE
    2565 * - \ref SCIP_STAGE_PRESOLVED
    2566 * - \ref SCIP_STAGE_INITSOLVE
    2567 * - \ref SCIP_STAGE_SOLVING
    2568 * - \ref SCIP_STAGE_SOLVED
    2569 * - \ref SCIP_STAGE_EXITSOLVE
    2570 * - \ref SCIP_STAGE_FREETRANS
    2571 *
    2572 * @note The success pointer indicates if all variables were copied into the vars arrray.
    2573 *
    2574 * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
    2575 * set to FALSE.
    2576 */
    2578 SCIP* scip, /**< SCIP data structure */
    2579 SCIP_CONS* cons, /**< constraint for which the variables are wanted */
    2580 SCIP_VAR** vars, /**< array to store the involved variable of the constraint */
    2581 int varssize, /**< available slots in vars array which is needed to check if the array is large enough */
    2582 SCIP_Bool* success /**< pointer to store whether the variables are successfully copied */
    2583 )
    2584{
    2585 SCIP_CALL( SCIPcheckStage(scip, "SCIPgetConsVars", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE) );
    2586
    2587 assert(scip != NULL);
    2588 assert(cons != NULL);
    2589 assert(vars != NULL);
    2590 assert(success != NULL);
    2591
    2592 SCIP_CALL( SCIPconsGetVars(cons, scip->set, vars, varssize, success) );
    2593
    2594 return SCIP_OKAY;
    2595}
    2596
    2597/** method to collect the number of variables of a constraint
    2598 *
    2599 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2600 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2601 *
    2602 * @pre This method can be called if @p scip is in one of the following stages:
    2603 * - \ref SCIP_STAGE_PROBLEM
    2604 * - \ref SCIP_STAGE_TRANSFORMING
    2605 * - \ref SCIP_STAGE_TRANSFORMED
    2606 * - \ref SCIP_STAGE_INITPRESOLVE
    2607 * - \ref SCIP_STAGE_PRESOLVING
    2608 * - \ref SCIP_STAGE_EXITPRESOLVE
    2609 * - \ref SCIP_STAGE_PRESOLVED
    2610 * - \ref SCIP_STAGE_INITSOLVE
    2611 * - \ref SCIP_STAGE_SOLVING
    2612 * - \ref SCIP_STAGE_SOLVED
    2613 * - \ref SCIP_STAGE_EXITSOLVE
    2614 * - \ref SCIP_STAGE_FREETRANS
    2615 *
    2616 * @note The success pointer indicates if the contraint handler was able to return the number of variables
    2617 *
    2618 * @note It might be that a constraint handler does not support this functionality, in that case the success pointer is
    2619 * set to FALSE
    2620 */
    2622 SCIP* scip, /**< SCIP data structure */
    2623 SCIP_CONS* cons, /**< constraint for which the number of variables is wanted */
    2624 int* nvars, /**< pointer to store the number of variables */
    2625 SCIP_Bool* success /**< pointer to store whether the constraint successfully returned the number of variables */
    2626 )
    2627{
    2628 SCIP_CALL( SCIPcheckStage(scip, "SCIPgetConsNVars", FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE) );
    2629
    2630 assert(scip != NULL);
    2631 assert(cons != NULL);
    2632 assert(nvars != NULL);
    2633 assert(success != NULL);
    2634
    2635 SCIP_CALL( SCIPconsGetNVars(cons, scip->set, nvars, success) );
    2636
    2637 return SCIP_OKAY;
    2638}
    2639
    2640/** method to get the permutation symmetry detection graph of a constraint
    2641 *
    2642 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2643 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2644 *
    2645 * @pre This method can be called if SCIP is in one of the following stages:
    2646 * - \ref SCIP_STAGE_TRANSFORMED
    2647 * - \ref SCIP_STAGE_INITPRESOLVE
    2648 * - \ref SCIP_STAGE_PRESOLVING
    2649 * - \ref SCIP_STAGE_EXITPRESOLVE
    2650 * - \ref SCIP_STAGE_PRESOLVED
    2651 * - \ref SCIP_STAGE_INITSOLVE
    2652 * - \ref SCIP_STAGE_SOLVING
    2653 */
    2655 SCIP* scip, /**< SCIP data structure */
    2656 SCIP_CONS* cons, /**< constraint for which the symmetry graph is requested */
    2657 SYM_GRAPH* graph, /**< symmetry detection graph */
    2658 SCIP_Bool* success /**< pointer to store whether the constraint successfully returned the graph */
    2659 )
    2660{
    2661 SCIP_CALL( SCIPcheckStage(scip, "SCIPgetConsPermsymGraph", FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    2662
    2663 assert(scip != NULL);
    2664 assert(cons != NULL);
    2665 assert(graph != NULL);
    2666 assert(success != NULL);
    2667
    2668 SCIP_CALL( SCIPconsGetPermsymGraph(cons, scip->set, graph, success) );
    2669
    2670 return SCIP_OKAY;
    2671}
    2672
    2673/** method to get the signed permutation symmetry detection graph of a constraint
    2674 *
    2675 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2676 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2677 *
    2678 * @pre This method can be called if SCIP is in one of the following stages:
    2679 * - \ref SCIP_STAGE_TRANSFORMED
    2680 * - \ref SCIP_STAGE_INITPRESOLVE
    2681 * - \ref SCIP_STAGE_PRESOLVING
    2682 * - \ref SCIP_STAGE_EXITPRESOLVE
    2683 * - \ref SCIP_STAGE_PRESOLVED
    2684 * - \ref SCIP_STAGE_INITSOLVE
    2685 * - \ref SCIP_STAGE_SOLVING
    2686 */
    2688 SCIP* scip, /**< SCIP data structure */
    2689 SCIP_CONS* cons, /**< constraint for which the symmetry graph is requested */
    2690 SYM_GRAPH* graph, /**< symmetry detection graph */
    2691 SCIP_Bool* success /**< pointer to store whether the constraint successfully returned the graph */
    2692 )
    2693{
    2694 SCIP_CALL( SCIPcheckStage(scip, "SCIPgetConsSignedPermsymGraph", FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE) );
    2695
    2696 assert(scip != NULL);
    2697 assert(cons != NULL);
    2698 assert(graph != NULL);
    2699 assert(success != NULL);
    2700
    2701 SCIP_CALL( SCIPconsGetSignedPermsymGraph(cons, scip->set, graph, success) );
    2702
    2703 return SCIP_OKAY;
    2704}
    SCIP_DECL_CONSENFOPS(ConshdlrSubtour::scip_enfops)
    SCIP_DECL_CONSSEPASOL(ConshdlrSubtour::scip_sepasol)
    SCIP_DECL_CONSLOCK(ConshdlrSubtour::scip_lock)
    SCIP_DECL_CONSDELETE(ConshdlrSubtour::scip_delete)
    SCIP_DECL_CONSCOPY(ConshdlrSubtour::scip_copy)
    SCIP_DECL_CONSSEPALP(ConshdlrSubtour::scip_sepalp)
    SCIP_DECL_CONSTRANS(ConshdlrSubtour::scip_trans)
    SCIP_DECL_CONSDELVARS(ConshdlrSubtour::scip_delvars)
    SCIP_DECL_CONSPRINT(ConshdlrSubtour::scip_print)
    SCIP_DECL_CONSCHECK(ConshdlrSubtour::scip_check)
    SCIP_DECL_CONSPROP(ConshdlrSubtour::scip_prop)
    SCIP_DECL_CONSENFOLP(ConshdlrSubtour::scip_enfolp)
    void SCIPconshdlrSetFree(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSFREE((*consfree)))
    Definition: cons.c:4446
    SCIP_RETCODE SCIPconsAddLocks(SCIP_CONS *cons, SCIP_SET *set, SCIP_LOCKTYPE locktype, int nlockspos, int nlocksneg)
    Definition: cons.c:7553
    void SCIPconshdlrSetInitsol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITSOL((*consinitsol)))
    Definition: cons.c:4479
    SCIP_RETCODE SCIPconsParse(SCIP_CONS **cons, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *str, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool *success)
    Definition: cons.c:6228
    SCIP_RETCODE SCIPconsEnableSeparation(SCIP_CONS *cons, SCIP_SET *set)
    Definition: cons.c:7175
    void SCIPconshdlrSetTrans(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))
    Definition: cons.c:4563
    SCIP_RETCODE SCIPconshdlrSetPresol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_PRESOLTIMING presoltiming)
    Definition: cons.c:4523
    SCIP_RETCODE SCIPconsEnable(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
    Definition: cons.c:7108
    void SCIPconsCapture(SCIP_CONS *cons)
    Definition: cons.c:6427
    SCIP_RETCODE SCIPconsProp(SCIP_CONS *cons, SCIP_SET *set, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)
    Definition: cons.c:7877
    SCIP_RETCODE SCIPconsPrint(SCIP_CONS *cons, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
    Definition: cons.c:6479
    SCIP_RETCODE SCIPconsCreate(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set, const char *name, SCIP_CONSHDLR *conshdlr, SCIP_CONSDATA *consdata, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool original, SCIP_Bool deleteconsdata)
    Definition: cons.c:6029
    void SCIPconsSetLocal(SCIP_CONS *cons, SCIP_Bool local)
    Definition: cons.c:6949
    SCIP_RETCODE SCIPconsMarkPropagate(SCIP_CONS *cons, SCIP_SET *set)
    Definition: cons.c:7305
    void SCIPconshdlrSetInit(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINIT((*consinit)))
    Definition: cons.c:4457
    void SCIPconshdlrSetDelete(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELETE((*consdelete)))
    Definition: cons.c:4552
    void SCIPconshdlrSetParse(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
    Definition: cons.c:4662
    void SCIPconshdlrSetGetPermsymGraph(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)))
    Definition: cons.c:4706
    void SCIPconshdlrSetGetNVars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
    Definition: cons.c:4684
    SCIP_RETCODE SCIPconsDisable(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat)
    Definition: cons.c:7141
    SCIP_RETCODE SCIPconsDeactive(SCIP_CONS *cons, SCIP_SET *set)
    Definition: cons.c:8057
    void SCIPconshdlrSetActive(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSACTIVE((*consactive)))
    Definition: cons.c:4596
    SCIP_RETCODE SCIPconsGetPermsymGraph(SCIP_CONS *cons, SCIP_SET *set, SYM_GRAPH *graph, SCIP_Bool *success)
    Definition: cons.c:6589
    SCIP_RETCODE SCIPconsGetNVars(SCIP_CONS *cons, SCIP_SET *set, int *nvars, SCIP_Bool *success)
    Definition: cons.c:6554
    void SCIPconshdlrSetInitpre(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITPRE((*consinitpre)))
    Definition: cons.c:4501
    void SCIPconsSetStickingAtNode(SCIP_CONS *cons, SCIP_Bool stickingatnode)
    Definition: cons.c:6995
    SCIP_RETCODE SCIPconsSetSeparated(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool separate)
    Definition: cons.c:6796
    SCIP_RETCODE SCIPconsSepalp(SCIP_CONS *cons, SCIP_SET *set, SCIP_RESULT *result)
    Definition: cons.c:7793
    SCIP_RETCODE SCIPconsEnfops(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_RESULT *result)
    Definition: cons.c:7637
    SCIP_RETCODE SCIPconsActive(SCIP_CONS *cons, SCIP_SET *set)
    Definition: cons.c:8033
    SCIP_RETCODE SCIPconsResetAge(SCIP_CONS *cons, SCIP_SET *set)
    Definition: cons.c:7452
    SCIP_RETCODE SCIPconsResprop(SCIP_CONS *cons, SCIP_SET *set, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd, SCIP_RESULT *result)
    Definition: cons.c:7917
    void SCIPconsSetRemovable(SCIP_CONS *cons, SCIP_Bool removable)
    Definition: cons.c:6984
    SCIP_RETCODE SCIPconshdlrCreate(SCIP_CONSHDLR **conshdlr, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int sepapriority, int enfopriority, int checkpriority, int sepafreq, int propfreq, int eagerfreq, int maxprerounds, SCIP_Bool delaysepa, SCIP_Bool delayprop, SCIP_Bool needscons, SCIP_PROPTIMING proptiming, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSFREE((*consfree)), SCIP_DECL_CONSINIT((*consinit)), SCIP_DECL_CONSEXIT((*consexit)), SCIP_DECL_CONSINITPRE((*consinitpre)), SCIP_DECL_CONSEXITPRE((*consexitpre)), SCIP_DECL_CONSINITSOL((*consinitsol)), SCIP_DECL_CONSEXITSOL((*consexitsol)), SCIP_DECL_CONSDELETE((*consdelete)), SCIP_DECL_CONSTRANS((*constrans)), SCIP_DECL_CONSINITLP((*consinitlp)), SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), SCIP_DECL_CONSENFOLP((*consenfolp)), SCIP_DECL_CONSENFORELAX((*consenforelax)), SCIP_DECL_CONSENFOPS((*consenfops)), SCIP_DECL_CONSCHECK((*conscheck)), SCIP_DECL_CONSPROP((*consprop)), SCIP_DECL_CONSPRESOL((*conspresol)), SCIP_DECL_CONSRESPROP((*consresprop)), SCIP_DECL_CONSLOCK((*conslock)), SCIP_DECL_CONSACTIVE((*consactive)), SCIP_DECL_CONSDEACTIVE((*consdeactive)), SCIP_DECL_CONSENABLE((*consenable)), SCIP_DECL_CONSDISABLE((*consdisable)), SCIP_DECL_CONSDELVARS((*consdelvars)), SCIP_DECL_CONSPRINT((*consprint)), SCIP_DECL_CONSCOPY((*conscopy)), SCIP_DECL_CONSPARSE((*consparse)), SCIP_DECL_CONSGETVARS((*consgetvars)), SCIP_DECL_CONSGETNVARS((*consgetnvars)), SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)), SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)), SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)), SCIP_CONSHDLRDATA *conshdlrdata)
    Definition: cons.c:2287
    SCIP_RETCODE SCIPconsTransform(SCIP_CONS *origcons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_CONS **transcons)
    Definition: cons.c:6712
    SCIP_RETCODE SCIPconsCheck(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_RESULT *result)
    Definition: cons.c:7599
    void SCIPconshdlrSetDisable(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDISABLE((*consdisable)))
    Definition: cons.c:4629
    SCIP_RETCODE SCIPconsAddAge(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_Real deltaage, SCIP_REOPT *reopt)
    Definition: cons.c:7372
    void SCIPconshdlrSetGetSignedPermsymGraph(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)))
    Definition: cons.c:4718
    SCIP_RETCODE SCIPconsEnablePropagation(SCIP_CONS *cons, SCIP_SET *set)
    Definition: cons.c:7233
    SCIP_RETCODE SCIPconsEnfolp(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool solinfeasible, SCIP_RESULT *result)
    Definition: cons.c:7681
    SCIP_RETCODE SCIPconsSetInitial(SCIP_CONS *cons, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool initial)
    Definition: cons.c:6762
    SCIP_RETCODE SCIPconsChgName(SCIP_CONS *cons, BMS_BLKMEM *blkmem, const char *name)
    Definition: cons.c:6351
    SCIP_RETCODE SCIPconsIncAge(SCIP_CONS *cons, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_REOPT *reopt)
    Definition: cons.c:7431
    void SCIPconshdlrSetExitsol(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITSOL((*consexitsol)))
    Definition: cons.c:4490
    void SCIPconsSetDynamic(SCIP_CONS *cons, SCIP_Bool dynamic)
    Definition: cons.c:6973
    SCIP_RETCODE SCIPconsSepasol(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_RESULT *result)
    Definition: cons.c:7834
    SCIP_RETCODE SCIPconsPresol(SCIP_CONS *cons, SCIP_SET *set, int nrounds, SCIP_PRESOLTIMING timing, int nnewfixedvars, int nnewaggrvars, int nnewchgvartypes, int nnewchgbds, int nnewholes, int nnewdelconss, int nnewaddconss, int nnewupgdconss, int nnewchgcoefs, int nnewchgsides, int *nfixedvars, int *naggrvars, int *nchgvartypes, int *nchgbds, int *naddholes, int *ndelconss, int *naddconss, int *nupgdconss, int *nchgcoefs, int *nchgsides, SCIP_RESULT *result)
    Definition: cons.c:7959
    SCIP_RETCODE SCIPconsDisablePropagation(SCIP_CONS *cons, SCIP_SET *set)
    Definition: cons.c:7263
    void SCIPconshdlrSetResprop(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSRESPROP((*consresprop)))
    Definition: cons.c:4585
    SCIP_RETCODE SCIPconsRelease(SCIP_CONS **cons, BMS_BLKMEM *blkmem, SCIP_SET *set)
    Definition: cons.c:6439
    void SCIPconshdlrSetInitlp(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITLP((*consinitlp)))
    Definition: cons.c:4574
    SCIP_RETCODE SCIPconsSetPropagated(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool propagate)
    Definition: cons.c:6914
    SCIP_RETCODE SCIPconsDisableSeparation(SCIP_CONS *cons, SCIP_SET *set)
    Definition: cons.c:7205
    void SCIPconshdlrSetGetDiveBdChgs(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)))
    Definition: cons.c:4695
    SCIP_RETCODE SCIPconsGetSignedPermsymGraph(SCIP_CONS *cons, SCIP_SET *set, SYM_GRAPH *graph, SCIP_Bool *success)
    Definition: cons.c:6622
    SCIP_RETCODE SCIPconsSetChecked(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool check)
    Definition: cons.c:6866
    SCIP_RETCODE SCIPconsInitlp(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool *infeasible)
    Definition: cons.c:7767
    SCIP_RETCODE SCIPconsEnforelax(SCIP_CONS *cons, SCIP_SET *set, SCIP_SOL *sol, SCIP_Bool solinfeasible, SCIP_RESULT *result)
    Definition: cons.c:7723
    void SCIPconshdlrSetExit(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXIT((*consexit)))
    Definition: cons.c:4468
    void SCIPconshdlrSetCopy(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
    Definition: cons.c:4431
    void SCIPconshdlrSetDelvars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELVARS((*consdelvars)))
    Definition: cons.c:4640
    void SCIPconshdlrSetEnable(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENABLE((*consenable)))
    Definition: cons.c:4618
    SCIP_CONS * SCIPconsGetTransformed(SCIP_CONS *cons)
    Definition: cons.c:7021
    void SCIPconshdlrSetPrint(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
    Definition: cons.c:4651
    SCIP_RETCODE SCIPconsUnmarkPropagate(SCIP_CONS *cons, SCIP_SET *set)
    Definition: cons.c:7335
    void SCIPconshdlrSetDeactive(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDEACTIVE((*consdeactive)))
    Definition: cons.c:4607
    SCIP_RETCODE SCIPconsGetVars(SCIP_CONS *cons, SCIP_SET *set, SCIP_VAR **vars, int varssize, SCIP_Bool *success)
    Definition: cons.c:6518
    SCIP_RETCODE SCIPconsSetEnforced(SCIP_CONS *cons, SCIP_SET *set, SCIP_Bool enforce)
    Definition: cons.c:6831
    void SCIPconsSetModifiable(SCIP_CONS *cons, SCIP_Bool modifiable)
    Definition: cons.c:6962
    void SCIPconshdlrSetGetVars(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETVARS((*consgetvars)))
    Definition: cons.c:4673
    void SCIPconshdlrSetExitpre(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITPRE((*consexitpre)))
    Definition: cons.c:4512
    internal methods for constraints and constraint handlers
    methods for debugging
    #define SCIPcheckStage(scip, method, init, problem, transforming, transformed, initpresolve, presolving, exitpresolve, presolved, initsolve, solving, solved, exitsolve, freetrans, freescip)
    Definition: debug.h:364
    #define NULL
    Definition: def.h:248
    #define SCIP_MAXSTRLEN
    Definition: def.h:269
    #define SCIP_Bool
    Definition: def.h:91
    #define SCIP_Real
    Definition: def.h:156
    #define TRUE
    Definition: def.h:93
    #define FALSE
    Definition: def.h:94
    #define SCIPABORT()
    Definition: def.h:327
    #define SCIP_CALL(x)
    Definition: def.h:355
    SCIP_STAGE SCIPgetStage(SCIP *scip)
    Definition: scip_general.c:444
    SCIP_RETCODE SCIPsetConshdlrParse(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPARSE((*consparse)))
    Definition: scip_cons.c:808
    SCIP_RETCODE SCIPsetConshdlrEnable(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENABLE((*consenable)))
    Definition: scip_cons.c:716
    SCIP_RETCODE SCIPsetConshdlrPresol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRESOL((*conspresol)), int maxprerounds, SCIP_PRESOLTIMING presoltiming)
    Definition: scip_cons.c:540
    SCIP_RETCODE SCIPsetConshdlrInit(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINIT((*consinit)))
    Definition: scip_cons.c:396
    SCIP_RETCODE SCIPsetConshdlrGetVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETVARS((*consgetvars)))
    Definition: scip_cons.c:831
    void SCIPconshdlrSetProp(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPROP((*consprop)), int propfreq, SCIP_Bool delayprop, SCIP_PROPTIMING timingmask)
    Definition: cons.c:4401
    SCIP_RETCODE SCIPsetConshdlrInitpre(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITPRE((*consinitpre)))
    Definition: scip_cons.c:492
    SCIP_RETCODE SCIPsetConshdlrSepa(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), int sepafreq, int sepapriority, SCIP_Bool delaysepa)
    Definition: scip_cons.c:235
    SCIP_RETCODE SCIPsetConshdlrProp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPROP((*consprop)), int propfreq, SCIP_Bool delayprop, SCIP_PROPTIMING proptiming)
    Definition: scip_cons.c:281
    int SCIPgetNConshdlrs(SCIP *scip)
    Definition: scip_cons.c:964
    int SCIPconshdlrGetSepaPriority(SCIP_CONSHDLR *conshdlr)
    Definition: cons.c:5242
    SCIP_RETCODE SCIPincludeConshdlrBasic(SCIP *scip, SCIP_CONSHDLR **conshdlrptr, const char *name, const char *desc, int enfopriority, int chckpriority, int eagerfreq, SCIP_Bool needscons, SCIP_DECL_CONSENFOLP((*consenfolp)), SCIP_DECL_CONSENFOPS((*consenfops)), SCIP_DECL_CONSCHECK((*conscheck)), SCIP_DECL_CONSLOCK((*conslock)), SCIP_CONSHDLRDATA *conshdlrdata)
    Definition: scip_cons.c:181
    SCIP_RETCODE SCIPsetConshdlrDisable(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDISABLE((*consdisable)))
    Definition: scip_cons.c:739
    void SCIPconshdlrSetSepa(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), int sepafreq, int sepapriority, SCIP_Bool delaysepa)
    Definition: cons.c:4380
    SCIP_RETCODE SCIPsetConshdlrDeactive(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDEACTIVE((*consdeactive)))
    Definition: scip_cons.c:693
    void SCIPconshdlrSetEnforelax(SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENFORELAX((*consenforelax)))
    Definition: cons.c:4420
    SCIP_RETCODE SCIPsetConshdlrGetPermsymGraph(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)))
    Definition: scip_cons.c:900
    SCIP_RETCODE SCIPsetConshdlrDelete(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELETE((*consdelete)))
    Definition: scip_cons.c:578
    SCIP_RETCODE SCIPsetConshdlrFree(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSFREE((*consfree)))
    Definition: scip_cons.c:372
    SCIP_RETCODE SCIPsetConshdlrEnforelax(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSENFORELAX((*consenforelax)))
    Definition: scip_cons.c:323
    SCIP_RETCODE SCIPsetConshdlrGetDiveBdChgs(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)))
    Definition: scip_cons.c:877
    const char * SCIPconshdlrGetName(SCIP_CONSHDLR *conshdlr)
    Definition: cons.c:4316
    SCIP_RETCODE SCIPsetConshdlrExit(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXIT((*consexit)))
    Definition: scip_cons.c:420
    SCIP_RETCODE SCIPsetConshdlrExitpre(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITPRE((*consexitpre)))
    Definition: scip_cons.c:516
    SCIP_RETCODE SCIPsetConshdlrCopy(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSCOPY((*conscopy)))
    Definition: scip_cons.c:347
    SCIP_CONSHDLR * SCIPfindConshdlr(SCIP *scip, const char *name)
    Definition: scip_cons.c:940
    SCIP_RETCODE SCIPsetConshdlrGetSignedPermsymGraph(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)))
    Definition: scip_cons.c:924
    SCIP_RETCODE SCIPsetConshdlrExitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSEXITSOL((*consexitsol)))
    Definition: scip_cons.c:468
    SCIP_RETCODE SCIPsetConshdlrDelvars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSDELVARS((*consdelvars)))
    Definition: scip_cons.c:762
    SCIP_RETCODE SCIPsetConshdlrInitlp(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITLP((*consinitlp)))
    Definition: scip_cons.c:624
    SCIP_RETCODE SCIPsetConshdlrInitsol(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSINITSOL((*consinitsol)))
    Definition: scip_cons.c:444
    SCIP_RETCODE SCIPsetConshdlrTrans(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSTRANS((*constrans)))
    Definition: scip_cons.c:601
    SCIP_RETCODE SCIPsetConshdlrResprop(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSRESPROP((*consresprop)))
    Definition: scip_cons.c:647
    SCIP_RETCODE SCIPsetConshdlrGetNVars(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSGETNVARS((*consgetnvars)))
    Definition: scip_cons.c:854
    SCIP_RETCODE SCIPincludeConshdlr(SCIP *scip, const char *name, const char *desc, int sepapriority, int enfopriority, int chckpriority, int sepafreq, int propfreq, int eagerfreq, int maxprerounds, SCIP_Bool delaysepa, SCIP_Bool delayprop, SCIP_Bool needscons, SCIP_PROPTIMING proptiming, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_CONSHDLRCOPY((*conshdlrcopy)), SCIP_DECL_CONSFREE((*consfree)), SCIP_DECL_CONSINIT((*consinit)), SCIP_DECL_CONSEXIT((*consexit)), SCIP_DECL_CONSINITPRE((*consinitpre)), SCIP_DECL_CONSEXITPRE((*consexitpre)), SCIP_DECL_CONSINITSOL((*consinitsol)), SCIP_DECL_CONSEXITSOL((*consexitsol)), SCIP_DECL_CONSDELETE((*consdelete)), SCIP_DECL_CONSTRANS((*constrans)), SCIP_DECL_CONSINITLP((*consinitlp)), SCIP_DECL_CONSSEPALP((*conssepalp)), SCIP_DECL_CONSSEPASOL((*conssepasol)), SCIP_DECL_CONSENFOLP((*consenfolp)), SCIP_DECL_CONSENFORELAX((*consenforelax)), SCIP_DECL_CONSENFOPS((*consenfops)), SCIP_DECL_CONSCHECK((*conscheck)), SCIP_DECL_CONSPROP((*consprop)), SCIP_DECL_CONSPRESOL((*conspresol)), SCIP_DECL_CONSRESPROP((*consresprop)), SCIP_DECL_CONSLOCK((*conslock)), SCIP_DECL_CONSACTIVE((*consactive)), SCIP_DECL_CONSDEACTIVE((*consdeactive)), SCIP_DECL_CONSENABLE((*consenable)), SCIP_DECL_CONSDISABLE((*consdisable)), SCIP_DECL_CONSDELVARS((*consdelvars)), SCIP_DECL_CONSPRINT((*consprint)), SCIP_DECL_CONSCOPY((*conscopy)), SCIP_DECL_CONSPARSE((*consparse)), SCIP_DECL_CONSGETVARS((*consgetvars)), SCIP_DECL_CONSGETNVARS((*consgetnvars)), SCIP_DECL_CONSGETDIVEBDCHGS((*consgetdivebdchgs)), SCIP_DECL_CONSGETPERMSYMGRAPH((*consgetpermsymgraph)), SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH((*consgetsignedpermsymgraph)), SCIP_CONSHDLRDATA *conshdlrdata)
    Definition: scip_cons.c:83
    SCIP_RETCODE SCIPsetConshdlrActive(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSACTIVE((*consactive)))
    Definition: scip_cons.c:670
    SCIP_CONSHDLR ** SCIPgetConshdlrs(SCIP *scip)
    Definition: scip_cons.c:953
    SCIP_RETCODE SCIPsetConshdlrPrint(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_DECL_CONSPRINT((*consprint)))
    Definition: scip_cons.c:785
    SCIP_RETCODE SCIPgetConsNVars(SCIP *scip, SCIP_CONS *cons, int *nvars, SCIP_Bool *success)
    Definition: scip_cons.c:2621
    SCIP_RETCODE SCIPgetConsSignedPermsymGraph(SCIP *scip, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)
    Definition: scip_cons.c:2687
    SCIP_RETCODE SCIPenfopsCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool solinfeasible, SCIP_Bool objinfeasible, SCIP_RESULT *result)
    Definition: scip_cons.c:2163
    SCIP_RETCODE SCIPdisableConsSeparation(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:1924
    SCIP_RETCODE SCIPgetTransformedConss(SCIP *scip, int nconss, SCIP_CONS **conss, SCIP_CONS **transconss)
    Definition: scip_cons.c:1714
    SCIP_RETCODE SCIPcheckCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_RESULT *result)
    Definition: scip_cons.c:2135
    SCIP_Bool SCIPconsIsDynamic(SCIP_CONS *cons)
    Definition: cons.c:8648
    SCIP_RETCODE SCIPenableCons(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:1837
    SCIP_RETCODE SCIPpresolCons(SCIP *scip, SCIP_CONS *cons, int nrounds, SCIP_PRESOLTIMING presoltiming, int nnewfixedvars, int nnewaggrvars, int nnewchgvartypes, int nnewchgbds, int nnewholes, int nnewdelconss, int nnewaddconss, int nnewupgdconss, int nnewchgcoefs, int nnewchgsides, int *nfixedvars, int *naggrvars, int *nchgvartypes, int *nchgbds, int *naddholes, int *ndelconss, int *naddconss, int *nupgdconss, int *nchgcoefs, int *nchgsides, SCIP_RESULT *result)
    Definition: scip_cons.c:2406
    SCIP_Bool SCIPconsIsInitial(SCIP_CONS *cons)
    Definition: cons.c:8558
    SCIP_RETCODE SCIPsetConsStickingAtNode(SCIP *scip, SCIP_CONS *cons, SCIP_Bool stickingatnode)
    Definition: scip_cons.c:1499
    SCIP_RETCODE SCIPchgConsName(SCIP *scip, SCIP_CONS *cons, const char *name)
    Definition: scip_cons.c:1224
    SCIP_RETCODE SCIPenfolpCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool solinfeasible, SCIP_RESULT *result)
    Definition: scip_cons.c:2194
    SCIP_RETCODE SCIPprintCons(SCIP *scip, SCIP_CONS *cons, FILE *file)
    Definition: scip_cons.c:2536
    SCIP_RETCODE SCIPpropCons(SCIP *scip, SCIP_CONS *cons, SCIP_PROPTIMING proptiming, SCIP_RESULT *result)
    Definition: scip_cons.c:2340
    SCIP_RETCODE SCIPtransformConss(SCIP *scip, int nconss, SCIP_CONS **conss, SCIP_CONS **transconss)
    Definition: scip_cons.c:1625
    SCIP_RETCODE SCIPenableConsPropagation(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:1951
    SCIP_RETCODE SCIPgetConsPermsymGraph(SCIP *scip, SCIP_CONS *cons, SYM_GRAPH *graph, SCIP_Bool *success)
    Definition: scip_cons.c:2654
    SCIP_RETCODE SCIPdeactiveCons(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:2497
    SCIP_RETCODE SCIPsetConsSeparated(SCIP *scip, SCIP_CONS *cons, SCIP_Bool separate)
    Definition: scip_cons.c:1296
    SCIP_Bool SCIPconsIsMarkedPropagate(SCIP_CONS *cons)
    Definition: cons.c:8598
    SCIP_Bool SCIPconsIsOriginal(SCIP_CONS *cons)
    Definition: cons.c:8688
    SCIP_Bool SCIPconsIsChecked(SCIP_CONS *cons)
    Definition: cons.c:8588
    SCIP_Bool SCIPconsIsDeleted(SCIP_CONS *cons)
    Definition: cons.c:8518
    SCIP_RETCODE SCIPsepalpCons(SCIP *scip, SCIP_CONS *cons, SCIP_RESULT *result)
    Definition: scip_cons.c:2283
    SCIP_RETCODE SCIPsetConsDynamic(SCIP *scip, SCIP_CONS *cons, SCIP_Bool dynamic)
    Definition: scip_cons.c:1449
    SCIP_Bool SCIPconsIsTransformed(SCIP_CONS *cons)
    Definition: cons.c:8698
    SCIP_RETCODE SCIPgetConsVars(SCIP *scip, SCIP_CONS *cons, SCIP_VAR **vars, int varssize, SCIP_Bool *success)
    Definition: scip_cons.c:2577
    SCIP_RETCODE SCIPsetConsInitial(SCIP *scip, SCIP_CONS *cons, SCIP_Bool initial)
    Definition: scip_cons.c:1271
    SCIP_RETCODE SCIPsetConsEnforced(SCIP *scip, SCIP_CONS *cons, SCIP_Bool enforce)
    Definition: scip_cons.c:1321
    SCIP_RETCODE SCIPactiveCons(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:2468
    SCIP_Bool SCIPconsIsEnforced(SCIP_CONS *cons)
    Definition: cons.c:8578
    SCIP_RETCODE SCIPunmarkConsPropagate(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:2042
    SCIP_RETCODE SCIPenableConsSeparation(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:1896
    SCIP_RETCODE SCIPcreateCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_CONSHDLR *conshdlr, SCIP_CONSDATA *consdata, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
    Definition: scip_cons.c:997
    SCIP_Bool SCIPconsIsPropagated(SCIP_CONS *cons)
    Definition: cons.c:8608
    SCIP_RETCODE SCIPaddConsLocksType(SCIP *scip, SCIP_CONS *cons, SCIP_LOCKTYPE locktype, int nlockspos, int nlocksneg)
    Definition: scip_cons.c:2072
    SCIP_Bool SCIPconsIsEnabled(SCIP_CONS *cons)
    Definition: cons.c:8486
    SCIP_RETCODE SCIPdisableCons(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:1871
    SCIP_RETCODE SCIPresetConsAge(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:1812
    SCIP_RETCODE SCIPsetConsModifiable(SCIP *scip, SCIP_CONS *cons, SCIP_Bool modifiable)
    Definition: scip_cons.c:1424
    SCIP_RETCODE SCIPmarkConsPropagate(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:2014
    SCIP_RETCODE SCIPinitlpCons(SCIP *scip, SCIP_CONS *cons, SCIP_Bool *infeasible)
    Definition: scip_cons.c:2256
    SCIP_RETCODE SCIPsetConsRemovable(SCIP *scip, SCIP_CONS *cons, SCIP_Bool removable)
    Definition: scip_cons.c:1474
    SCIP_RETCODE SCIPrespropCons(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *infervar, int inferinfo, SCIP_BOUNDTYPE boundtype, SCIP_BDCHGIDX *bdchgidx, SCIP_Real relaxedbd, SCIP_RESULT *result)
    Definition: scip_cons.c:2371
    SCIP_RETCODE SCIPsetConsLocal(SCIP *scip, SCIP_CONS *cons, SCIP_Bool local)
    Definition: scip_cons.c:1398
    SCIP_RETCODE SCIPaddConsLocks(SCIP *scip, SCIP_CONS *cons, int nlockspos, int nlocksneg)
    Definition: scip_cons.c:2105
    SCIP_RETCODE SCIPgetTransformedCons(SCIP *scip, SCIP_CONS *cons, SCIP_CONS **transcons)
    Definition: scip_cons.c:1674
    SCIP_Bool SCIPconsIsAdded(SCIP_CONS *cons)
    Definition: cons.c:8818
    SCIP_RETCODE SCIPenforelaxCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool solinfeasible, SCIP_RESULT *result)
    Definition: scip_cons.c:2224
    SCIP_RETCODE SCIPupdateConsFlags(SCIP *scip, SCIP_CONS *cons0, SCIP_CONS *cons1)
    Definition: scip_cons.c:1524
    SCIP_Bool SCIPconsIsStickingAtNode(SCIP_CONS *cons)
    Definition: cons.c:8668
    SCIP_RETCODE SCIPdisableConsPropagation(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:1981
    SCIP_RETCODE SCIPaddConsAge(SCIP *scip, SCIP_CONS *cons, SCIP_Real deltaage)
    Definition: scip_cons.c:1755
    SCIP_RETCODE SCIPparseCons(SCIP *scip, SCIP_CONS **cons, const char *str, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode, SCIP_Bool *success)
    Definition: scip_cons.c:1081
    SCIP_RETCODE SCIPsepasolCons(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_RESULT *result)
    Definition: scip_cons.c:2310
    SCIP_RETCODE SCIPreleaseCons(SCIP *scip, SCIP_CONS **cons)
    Definition: scip_cons.c:1173
    SCIP_RETCODE SCIPsetConsPropagated(SCIP *scip, SCIP_CONS *cons, SCIP_Bool propagate)
    Definition: scip_cons.c:1371
    SCIP_RETCODE SCIPtransformCons(SCIP *scip, SCIP_CONS *cons, SCIP_CONS **transcons)
    Definition: scip_cons.c:1584
    SCIP_RETCODE SCIPsetConsChecked(SCIP *scip, SCIP_CONS *cons, SCIP_Bool check)
    Definition: scip_cons.c:1346
    SCIP_Bool SCIPconsIsSeparated(SCIP_CONS *cons)
    Definition: cons.c:8568
    SCIP_RETCODE SCIPcaptureCons(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:1138
    SCIP_RETCODE SCIPincConsAge(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_cons.c:1784
    SCIP_Bool SCIPconsIsRemovable(SCIP_CONS *cons)
    Definition: cons.c:8658
    BMS_BLKMEM * SCIPblkmem(SCIP *scip)
    Definition: scip_mem.c:57
    int SCIPsnprintf(char *t, int len, const char *s,...)
    Definition: misc.c:10827
    static const char * paramname[]
    Definition: lpi_msk.c:5172
    SCIP_RETCODE SCIPprobAddConsName(SCIP_PROB *prob, SCIP_CONS *cons)
    Definition: prob.c:1470
    SCIP_RETCODE SCIPprobRemoveConsName(SCIP_PROB *prob, SCIP_CONS *cons)
    Definition: prob.c:1485
    internal methods for storing and manipulating the main problem
    public methods for managing constraints
    public methods for message output
    #define SCIPerrorMessage
    Definition: pub_message.h:64
    public data structures and miscellaneous methods
    public methods for constraint handler plugins and constraints
    general public methods
    public methods for memory management
    static SCIP_RETCODE separate(SCIP *scip, SCIP_SEPA *sepa, SCIP_SOL *sol, SCIP_RESULT *result)
    Main separation function.
    Definition: sepa_flower.c:1221
    SCIP_RETCODE SCIPsetSetDefaultIntParam(SCIP_SET *set, const char *name, int defaultvalue)
    Definition: set.c:3556
    SCIP_RETCODE SCIPsetSetDefaultBoolParam(SCIP_SET *set, const char *name, SCIP_Bool defaultvalue)
    Definition: set.c:3503
    SCIP_CONSHDLR * SCIPsetFindConshdlr(SCIP_SET *set, const char *name)
    Definition: set.c:4244
    SCIP_RETCODE SCIPsetIncludeConshdlr(SCIP_SET *set, SCIP_CONSHDLR *conshdlr)
    Definition: set.c:4105
    void SCIPsetReinsertConshdlrSepaPrio(SCIP_SET *set, SCIP_CONSHDLR *conshdlr, int oldpriority)
    Definition: set.c:4161
    internal methods for global SCIP settings
    SCIP * scip
    Definition: struct_cons.h:111
    datastructures for constraints and constraint handlers
    datastructures for block memory pools and memory buffers
    SCIP main data structure.
    datastructures for global SCIP settings
    #define SCIP_DECL_CONSGETSIGNEDPERMSYMGRAPH(x)
    Definition: type_cons.h:955
    #define SCIP_DECL_CONSGETPERMSYMGRAPH(x)
    Definition: type_cons.h:937
    #define SCIP_DECL_CONSINITPRE(x)
    Definition: type_cons.h:156
    #define SCIP_DECL_CONSEXIT(x)
    Definition: type_cons.h:136
    #define SCIP_DECL_CONSGETVARS(x)
    Definition: type_cons.h:866
    #define SCIP_DECL_CONSINITSOL(x)
    Definition: type_cons.h:201
    struct SCIP_ConshdlrData SCIP_CONSHDLRDATA
    Definition: type_cons.h:64
    #define SCIP_DECL_CONSDISABLE(x)
    Definition: type_cons.h:735
    #define SCIP_DECL_CONSENFORELAX(x)
    Definition: type_cons.h:388
    #define SCIP_DECL_CONSGETDIVEBDCHGS(x)
    Definition: type_cons.h:919
    #define SCIP_DECL_CONSGETNVARS(x)
    Definition: type_cons.h:884
    #define SCIP_DECL_CONSRESPROP(x)
    Definition: type_cons.h:611
    #define SCIP_DECL_CONSACTIVE(x)
    Definition: type_cons.h:690
    #define SCIP_DECL_CONSPARSE(x)
    Definition: type_cons.h:844
    #define SCIP_DECL_CONSDEACTIVE(x)
    Definition: type_cons.h:705
    #define SCIP_DECL_CONSPRESOL(x)
    Definition: type_cons.h:560
    #define SCIP_DECL_CONSENABLE(x)
    Definition: type_cons.h:720
    #define SCIP_DECL_CONSINITLP(x)
    Definition: type_cons.h:259
    #define SCIP_DECL_CONSEXITPRE(x)
    Definition: type_cons.h:180
    #define SCIP_DECL_CONSINIT(x)
    Definition: type_cons.h:126
    struct SCIP_ConsData SCIP_CONSDATA
    Definition: type_cons.h:65
    #define SCIP_DECL_CONSHDLRCOPY(x)
    Definition: type_cons.h:108
    #define SCIP_DECL_CONSEXITSOL(x)
    Definition: type_cons.h:216
    #define SCIP_DECL_CONSFREE(x)
    Definition: type_cons.h:116
    enum SCIP_BoundType SCIP_BOUNDTYPE
    Definition: type_lp.h:60
    enum SCIP_Result SCIP_RESULT
    Definition: type_result.h:61
    @ SCIP_INVALIDDATA
    Definition: type_retcode.h:52
    @ 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_PROBLEM
    Definition: type_set.h:45
    @ SCIP_STAGE_INITPRESOLVE
    Definition: type_set.h:48
    @ SCIP_STAGE_SOLVED
    Definition: type_set.h:54
    @ SCIP_STAGE_PRESOLVING
    Definition: type_set.h:49
    @ SCIP_STAGE_TRANSFORMED
    Definition: type_set.h:47
    @ SCIP_STAGE_INITSOLVE
    Definition: type_set.h:52
    @ SCIP_STAGE_EXITPRESOLVE
    Definition: type_set.h:50
    @ SCIP_STAGE_EXITSOLVE
    Definition: type_set.h:55
    @ SCIP_STAGE_FREETRANS
    Definition: type_set.h:56
    @ SCIP_STAGE_SOLVING
    Definition: type_set.h:53
    @ SCIP_STAGE_TRANSFORMING
    Definition: type_set.h:46
    @ SCIP_STAGE_PRESOLVED
    Definition: type_set.h:51
    unsigned int SCIP_PROPTIMING
    Definition: type_timing.h:75
    #define SCIP_PRESOLTIMING_ALWAYS
    Definition: type_timing.h:58
    unsigned int SCIP_PRESOLTIMING
    Definition: type_timing.h:61
    #define SCIP_PROPTIMING_BEFORELP
    Definition: type_timing.h:66
    enum SCIP_LockType SCIP_LOCKTYPE
    Definition: type_var.h:144
    @ SCIP_LOCKTYPE_MODEL
    Definition: type_var.h:141