Scippy

    SCIP

    Solving Constraint Integer Programs

    scip_prop.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_prop.c
    26 * @ingroup OTHER_CFILES
    27 * @brief public methods for propagator plugins
    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 Thorsten Koch
    35 * @author Alexander Martin
    36 * @author Marc Pfetsch
    37 * @author Michael Winkler
    38 * @author Kati Wolter
    39 *
    40 * @todo check all SCIP_STAGE_* switches, and include the new stages TRANSFORMED and INITSOLVE
    41 */
    42
    43/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    44
    45#include "scip/debug.h"
    46#include "scip/prop.h"
    47#include "scip/pub_message.h"
    48#include "scip/pub_misc.h"
    49#include "scip/pub_prop.h"
    50#include "scip/scip_prop.h"
    51#include "scip/set.h"
    52#include "scip/struct_mem.h"
    53#include "scip/struct_scip.h"
    54#include "scip/struct_set.h"
    55
    56/** creates a propagator and includes it in SCIP.
    57 *
    58 * @pre This method can be called if SCIP is in one of the following stages:
    59 * - \ref SCIP_STAGE_INIT
    60 * - \ref SCIP_STAGE_PROBLEM
    61 *
    62 * @note method has all propagator callbacks as arguments and is thus changed every time a new
    63 * callback is added in future releases; consider using SCIPincludePropBasic() and setter functions
    64 * if you seek for a method which is less likely to change in future releases
    65 */
    67 SCIP* scip, /**< SCIP data structure */
    68 const char* name, /**< name of propagator */
    69 const char* desc, /**< description of propagator */
    70 int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
    71 int freq, /**< frequency for calling propagator */
    72 SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
    73 SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagator should be executed */
    74 int presolpriority, /**< presolving priority of the propagator (>= 0: before, < 0: after constraint handlers) */
    75 int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
    76 SCIP_PRESOLTIMING presoltiming, /**< timing mask of the propagator's presolving method */
    77 SCIP_DECL_PROPCOPY ((*propcopy)), /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
    78 SCIP_DECL_PROPFREE ((*propfree)), /**< destructor of propagator */
    79 SCIP_DECL_PROPINIT ((*propinit)), /**< initialize propagator */
    80 SCIP_DECL_PROPEXIT ((*propexit)), /**< deinitialize propagator */
    81 SCIP_DECL_PROPINITPRE ((*propinitpre)), /**< presolving initialization method of propagator */
    82 SCIP_DECL_PROPEXITPRE ((*propexitpre)), /**< presolving deinitialization method of propagator */
    83 SCIP_DECL_PROPINITSOL ((*propinitsol)), /**< solving process initialization method of propagator */
    84 SCIP_DECL_PROPEXITSOL ((*propexitsol)), /**< solving process deinitialization method of propagator */
    85 SCIP_DECL_PROPPRESOL ((*proppresol)), /**< presolving method */
    86 SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
    87 SCIP_DECL_PROPRESPROP ((*propresprop)), /**< propagation conflict resolving method */
    88 SCIP_PROPDATA* propdata /**< propagator data */
    89 )
    90{
    91 SCIP_PROP* prop;
    92
    94
    95 /* check whether propagator is already present */
    96 if( SCIPfindProp(scip, name) != NULL )
    97 {
    98 SCIPerrorMessage("propagator <%s> already included.\n", name);
    99 return SCIP_INVALIDDATA;
    100 }
    101
    102 SCIP_CALL( SCIPpropCreate(&prop, scip->set, scip->messagehdlr, scip->mem->setmem,
    103 name, desc, priority, freq, delay, timingmask, presolpriority, presolmaxrounds, presoltiming,
    104 propcopy, propfree, propinit, propexit, propinitpre, propexitpre, propinitsol, propexitsol,
    105 proppresol, propexec, propresprop, propdata) );
    106 SCIP_CALL( SCIPsetIncludeProp(scip->set, prop) );
    107
    108 return SCIP_OKAY;
    109}
    110
    111/** creates a propagator and includes it in SCIP. All non-fundamental (or optional) callbacks will be set to NULL.
    112 * Optional callbacks can be set via specific setter functions, see SCIPsetPropInit(), SCIPsetPropExit(),
    113 * SCIPsetPropCopy(), SCIPsetPropFree(), SCIPsetPropInitsol(), SCIPsetPropExitsol(),
    114 * SCIPsetPropInitpre(), SCIPsetPropExitpre(), SCIPsetPropPresol(), and SCIPsetPropResprop().
    115 *
    116* @note if you want to set all callbacks with a single method call, consider using SCIPincludeProp() instead
    117 */
    119 SCIP* scip, /**< SCIP data structure */
    120 SCIP_PROP** propptr, /**< reference to a propagator pointer, or NULL */
    121 const char* name, /**< name of propagator */
    122 const char* desc, /**< description of propagator */
    123 int priority, /**< priority of the propagator (>= 0: before, < 0: after constraint handlers) */
    124 int freq, /**< frequency for calling propagator */
    125 SCIP_Bool delay, /**< should propagator be delayed, if other propagators found reductions? */
    126 SCIP_PROPTIMING timingmask, /**< positions in the node solving loop where propagators should be executed */
    127 SCIP_DECL_PROPEXEC ((*propexec)), /**< execution method of propagator */
    128 SCIP_PROPDATA* propdata /**< propagator data */
    129 )
    130{
    131 SCIP_PROP* prop;
    132
    133 SCIP_CALL( SCIPcheckStage(scip, "SCIPincludePropBasic", TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE) );
    134
    135 /* check whether propagator is already present */
    136 if( SCIPfindProp(scip, name) != NULL )
    137 {
    138 SCIPerrorMessage("propagator <%s> already included.\n", name);
    139 return SCIP_INVALIDDATA;
    140 }
    141
    142 SCIP_CALL( SCIPpropCreate(&prop, scip->set, scip->messagehdlr, scip->mem->setmem,
    143 name, desc, priority, freq, delay, timingmask, 0, -1, SCIP_PRESOLTIMING_ALWAYS,
    145 NULL, propexec, NULL, propdata) );
    146 SCIP_CALL( SCIPsetIncludeProp(scip->set, prop) );
    147
    148 if( propptr != NULL )
    149 *propptr = prop;
    150
    151 return SCIP_OKAY;
    152}
    153
    154/** sets copy method of propagator */
    156 SCIP* scip, /**< SCIP data structure */
    157 SCIP_PROP* prop, /**< propagator */
    158 SCIP_DECL_PROPCOPY ((*propcopy)) /**< copy method of propagator or NULL if you don't want to copy your plugin into sub-SCIPs */
    159 )
    160{
    162
    163 assert(prop != NULL);
    164
    165 SCIPpropSetCopy(prop, propcopy);
    166
    167 return SCIP_OKAY;
    168}
    169
    170/** sets destructor method of propagator */
    172 SCIP* scip, /**< SCIP data structure */
    173 SCIP_PROP* prop, /**< propagator */
    174 SCIP_DECL_PROPFREE ((*propfree)) /**< destructor of propagator */
    175 )
    176{
    178
    179 assert(prop != NULL);
    180
    181 SCIPpropSetFree(prop, propfree);
    182
    183 return SCIP_OKAY;
    184}
    185
    186/** sets initialization method of propagator */
    188 SCIP* scip, /**< SCIP data structure */
    189 SCIP_PROP* prop, /**< propagator */
    190 SCIP_DECL_PROPINIT ((*propinit)) /**< initialize propagator */
    191 )
    192{
    194
    195 assert(prop != NULL);
    196
    197 SCIPpropSetInit(prop, propinit);
    198
    199 return SCIP_OKAY;
    200}
    201
    202/** sets deinitialization method of propagator */
    204 SCIP* scip, /**< SCIP data structure */
    205 SCIP_PROP* prop, /**< propagator */
    206 SCIP_DECL_PROPEXIT ((*propexit)) /**< deinitialize propagator */
    207 )
    208{
    210
    211 assert(prop != NULL);
    212
    213 SCIPpropSetExit(prop, propexit);
    214
    215 return SCIP_OKAY;
    216}
    217
    218/** sets solving process initialization method of propagator */
    220 SCIP* scip, /**< SCIP data structure */
    221 SCIP_PROP* prop, /**< propagator */
    222 SCIP_DECL_PROPINITSOL((*propinitsol)) /**< solving process initialization method of propagator */
    223 )
    224{
    226
    227 assert(prop != NULL);
    228
    229 SCIPpropSetInitsol(prop, propinitsol);
    230
    231 return SCIP_OKAY;
    232}
    233
    234/** sets solving process deinitialization method of propagator */
    236 SCIP* scip, /**< SCIP data structure */
    237 SCIP_PROP* prop, /**< propagator */
    238 SCIP_DECL_PROPEXITSOL ((*propexitsol)) /**< solving process deinitialization method of propagator */
    239 )
    240{
    242
    243 assert(prop != NULL);
    244
    245 SCIPpropSetExitsol(prop, propexitsol);
    246
    247 return SCIP_OKAY;
    248}
    249
    250/** sets preprocessing initialization method of propagator */
    252 SCIP* scip, /**< SCIP data structure */
    253 SCIP_PROP* prop, /**< propagator */
    254 SCIP_DECL_PROPINITPRE((*propinitpre)) /**< preprocessing initialization method of propagator */
    255 )
    256{
    258
    259 assert(prop != NULL);
    260
    261 SCIPpropSetInitpre(prop, propinitpre);
    262
    263 return SCIP_OKAY;
    264}
    265
    266/** sets preprocessing deinitialization method of propagator */
    268 SCIP* scip, /**< SCIP data structure */
    269 SCIP_PROP* prop, /**< propagator */
    270 SCIP_DECL_PROPEXITPRE((*propexitpre)) /**< preprocessing deinitialization method of propagator */
    271 )
    272{
    274
    275 assert(prop != NULL);
    276
    277 SCIPpropSetExitpre(prop, propexitpre);
    278
    279 return SCIP_OKAY;
    280}
    281
    282/** sets presolving method of propagator */
    284 SCIP* scip, /**< SCIP data structure */
    285 SCIP_PROP* prop, /**< propagator */
    286 SCIP_DECL_PROPPRESOL((*proppresol)), /**< presolving method of propagator */
    287 int presolpriority, /**< presolving priority of the propagator (>= 0: before, < 0: after constraint handlers) */
    288 int presolmaxrounds, /**< maximal number of presolving rounds the propagator participates in (-1: no limit) */
    289 SCIP_PRESOLTIMING presoltiming /**< timing mask of the propagator's presolving method */
    290 )
    291{
    292 const char* name;
    294
    295 assert(scip != NULL);
    297
    298 assert(prop != NULL);
    299 SCIP_CALL( SCIPpropSetPresol(prop, proppresol, presolpriority, presolmaxrounds, presoltiming) );
    300
    301 name = SCIPpropGetName(prop);
    302
    303 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "propagating/%s/maxprerounds", name);
    304 SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, presolmaxrounds) );
    305
    306 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "propagating/%s/presolpriority", name);
    307 SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, presolpriority) );
    308
    309 (void) SCIPsnprintf(paramname, SCIP_MAXSTRLEN, "propagating/%s/presoltiming", name);
    310 SCIP_CALL( SCIPsetSetDefaultIntParam(scip->set, paramname, (int) presoltiming) );
    311
    312 return SCIP_OKAY;
    313}
    314
    315/** sets propagation conflict resolving callback of propagator */
    317 SCIP* scip, /**< SCIP data structure */
    318 SCIP_PROP* prop, /**< propagator */
    319 SCIP_DECL_PROPRESPROP ((*propresprop)) /**< propagation conflict resolving callback */
    320 )
    321{
    323
    324 assert(prop != NULL);
    325
    326 SCIPpropSetResprop(prop, propresprop);
    327
    328 return SCIP_OKAY;
    329}
    330
    331
    332/** returns the propagator of the given name, or NULL if not existing */
    334 SCIP* scip, /**< SCIP data structure */
    335 const char* name /**< name of propagator */
    336 )
    337{
    338 assert(scip != NULL);
    339 assert(scip->set != NULL);
    340 assert(name != NULL);
    341
    342 return SCIPsetFindProp(scip->set, name);
    343}
    344
    345/** returns the array of currently available propagators */
    347 SCIP* scip /**< SCIP data structure */
    348 )
    349{
    350 assert(scip != NULL);
    351 assert(scip->set != NULL);
    352
    354
    355 return scip->set->props;
    356}
    357
    358/** returns the number of currently available propagators */
    360 SCIP* scip /**< SCIP data structure */
    361 )
    362{
    363 assert(scip != NULL);
    364 assert(scip->set != NULL);
    365
    366 return scip->set->nprops;
    367}
    368
    369/** sets the priority of a propagator */
    371 SCIP* scip, /**< SCIP data structure */
    372 SCIP_PROP* prop, /**< propagator */
    373 int priority /**< new priority of the propagator */
    374 )
    375{
    376 assert(scip != NULL);
    377 assert(scip->set != NULL);
    378
    379 SCIPpropSetPriority(prop, scip->set, priority);
    380
    381 return SCIP_OKAY;
    382}
    383
    384/** sets the presolving priority of a propagator */
    386 SCIP* scip, /**< SCIP data structure */
    387 SCIP_PROP* prop, /**< propagator */
    388 int presolpriority /**< new presol priority of the propagator */
    389 )
    390{
    391 assert(scip != NULL);
    392 assert(scip->set != NULL);
    393
    394 SCIPpropSetPresolPriority(prop, scip->set, presolpriority);
    395
    396 return SCIP_OKAY;
    397}
    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 TRUE
    Definition: def.h:93
    #define FALSE
    Definition: def.h:94
    #define SCIP_CALL(x)
    Definition: def.h:355
    SCIP_PROP * SCIPfindProp(SCIP *scip, const char *name)
    Definition: scip_prop.c:333
    SCIP_RETCODE SCIPsetPropPriority(SCIP *scip, SCIP_PROP *prop, int priority)
    Definition: scip_prop.c:370
    SCIP_RETCODE SCIPsetPropInitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
    Definition: scip_prop.c:219
    SCIP_RETCODE SCIPsetPropResprop(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
    Definition: scip_prop.c:316
    SCIP_RETCODE SCIPsetPropPresolPriority(SCIP *scip, SCIP_PROP *prop, int presolpriority)
    Definition: scip_prop.c:385
    int SCIPgetNProps(SCIP *scip)
    Definition: scip_prop.c:359
    SCIP_RETCODE SCIPsetPropPresol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming)
    Definition: scip_prop.c:283
    SCIP_RETCODE SCIPsetPropExitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
    Definition: scip_prop.c:267
    const char * SCIPpropGetName(SCIP_PROP *prop)
    Definition: prop.c:951
    SCIP_RETCODE SCIPsetPropExit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
    Definition: scip_prop.c:203
    SCIP_RETCODE SCIPsetPropInit(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
    Definition: scip_prop.c:187
    SCIP_RETCODE SCIPincludeProp(SCIP *scip, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_PROPCOPY((*propcopy)), SCIP_DECL_PROPFREE((*propfree)), SCIP_DECL_PROPINIT((*propinit)), SCIP_DECL_PROPEXIT((*propexit)), SCIP_DECL_PROPINITPRE((*propinitpre)), SCIP_DECL_PROPEXITPRE((*propexitpre)), SCIP_DECL_PROPINITSOL((*propinitsol)), SCIP_DECL_PROPEXITSOL((*propexitsol)), SCIP_DECL_PROPPRESOL((*proppresol)), SCIP_DECL_PROPEXEC((*propexec)), SCIP_DECL_PROPRESPROP((*propresprop)), SCIP_PROPDATA *propdata)
    Definition: scip_prop.c:66
    SCIP_RETCODE SCIPsetPropInitpre(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPINITPRE((*propinitpre)))
    Definition: scip_prop.c:251
    SCIP_RETCODE SCIPsetPropFree(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
    Definition: scip_prop.c:171
    SCIP_PROP ** SCIPgetProps(SCIP *scip)
    Definition: scip_prop.c:346
    SCIP_RETCODE SCIPsetPropCopy(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
    Definition: scip_prop.c:155
    SCIP_RETCODE SCIPsetPropExitsol(SCIP *scip, SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
    Definition: scip_prop.c:235
    SCIP_RETCODE SCIPincludePropBasic(SCIP *scip, SCIP_PROP **propptr, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, SCIP_DECL_PROPEXEC((*propexec)), SCIP_PROPDATA *propdata)
    Definition: scip_prop.c:118
    int SCIPsnprintf(char *t, int len, const char *s,...)
    Definition: misc.c:10827
    static const char * paramname[]
    Definition: lpi_msk.c:5172
    void SCIPpropSetPriority(SCIP_PROP *prop, SCIP_SET *set, int priority)
    Definition: prop.c:991
    void SCIPpropSetResprop(SCIP_PROP *prop, SCIP_DECL_PROPRESPROP((*propresprop)))
    Definition: prop.c:930
    void SCIPpropSetExitsol(SCIP_PROP *prop, SCIP_DECL_PROPEXITSOL((*propexitsol)))
    Definition: prop.c:867
    void SCIPpropSetFree(SCIP_PROP *prop, SCIP_DECL_PROPFREE((*propfree)))
    Definition: prop.c:823
    SCIP_RETCODE SCIPpropCreate(SCIP_PROP **prop, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, const char *name, const char *desc, int priority, int freq, SCIP_Bool delay, SCIP_PROPTIMING timingmask, int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming, SCIP_DECL_PROPCOPY((*propcopy)), SCIP_DECL_PROPFREE((*propfree)), SCIP_DECL_PROPINIT((*propinit)), SCIP_DECL_PROPEXIT((*propexit)), SCIP_DECL_PROPINITPRE((*propinitpre)), SCIP_DECL_PROPEXITPRE((*propexitpre)), SCIP_DECL_PROPINITSOL((*propinitsol)), SCIP_DECL_PROPEXITSOL((*propexitsol)), SCIP_DECL_PROPPRESOL((*proppresol)), SCIP_DECL_PROPEXEC((*propexec)), SCIP_DECL_PROPRESPROP((*propresprop)), SCIP_PROPDATA *propdata)
    Definition: prop.c:243
    void SCIPpropSetExitpre(SCIP_PROP *prop, SCIP_DECL_PROPEXITPRE((*propexitpre)))
    Definition: prop.c:889
    void SCIPpropSetInitsol(SCIP_PROP *prop, SCIP_DECL_PROPINITSOL((*propinitsol)))
    Definition: prop.c:856
    void SCIPpropSetExit(SCIP_PROP *prop, SCIP_DECL_PROPEXIT((*propexit)))
    Definition: prop.c:845
    void SCIPpropSetPresolPriority(SCIP_PROP *prop, SCIP_SET *set, int presolpriority)
    Definition: prop.c:1005
    void SCIPpropSetInitpre(SCIP_PROP *prop, SCIP_DECL_PROPINITPRE((*propinitpre)))
    Definition: prop.c:878
    void SCIPpropSetInit(SCIP_PROP *prop, SCIP_DECL_PROPINIT((*propinit)))
    Definition: prop.c:834
    SCIP_RETCODE SCIPpropSetPresol(SCIP_PROP *prop, SCIP_DECL_PROPPRESOL((*proppresol)), int presolpriority, int presolmaxrounds, SCIP_PRESOLTIMING presoltiming)
    Definition: prop.c:900
    void SCIPpropSetCopy(SCIP_PROP *prop, SCIP_DECL_PROPCOPY((*propcopy)))
    Definition: prop.c:812
    internal methods for propagators
    public methods for message output
    #define SCIPerrorMessage
    Definition: pub_message.h:64
    public data structures and miscellaneous methods
    public methods for propagators
    public methods for propagator plugins
    SCIP_RETCODE SCIPsetSetDefaultIntParam(SCIP_SET *set, const char *name, int defaultvalue)
    Definition: set.c:3556
    SCIP_RETCODE SCIPsetIncludeProp(SCIP_SET *set, SCIP_PROP *prop)
    Definition: set.c:4617
    void SCIPsetSortProps(SCIP_SET *set)
    Definition: set.c:4664
    SCIP_PROP * SCIPsetFindProp(SCIP_SET *set, const char *name)
    Definition: set.c:4644
    internal methods for global SCIP settings
    datastructures for block memory pools and memory buffers
    SCIP main data structure.
    datastructures for global SCIP settings
    #define SCIP_DECL_PROPCOPY(x)
    Definition: type_prop.h:61
    #define SCIP_DECL_PROPEXITPRE(x)
    Definition: type_prop.h:114
    #define SCIP_DECL_PROPINITSOL(x)
    Definition: type_prop.h:129
    #define SCIP_DECL_PROPINIT(x)
    Definition: type_prop.h:77
    #define SCIP_DECL_PROPFREE(x)
    Definition: type_prop.h:69
    #define SCIP_DECL_PROPEXITSOL(x)
    Definition: type_prop.h:141
    #define SCIP_DECL_PROPEXIT(x)
    Definition: type_prop.h:85
    #define SCIP_DECL_PROPPRESOL(x)
    Definition: type_prop.h:193
    #define SCIP_DECL_PROPINITPRE(x)
    Definition: type_prop.h:99
    #define SCIP_DECL_PROPRESPROP(x)
    Definition: type_prop.h:258
    struct SCIP_PropData SCIP_PROPDATA
    Definition: type_prop.h:52
    #define SCIP_DECL_PROPEXEC(x)
    Definition: type_prop.h:217
    @ SCIP_INVALIDDATA
    Definition: type_retcode.h:52
    @ SCIP_OKAY
    Definition: type_retcode.h:42
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63
    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