Scippy

    SCIP

    Solving Constraint Integer Programs

    scip_prob.h
    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_prob.h
    26 * @ingroup PUBLICCOREAPI
    27 * @brief public methods for global and local (sub)problems
    28 * @author Tobias Achterberg
    29 * @author Timo Berthold
    30 * @author Thorsten Koch
    31 * @author Alexander Martin
    32 * @author Marc Pfetsch
    33 * @author Kati Wolter
    34 * @author Gregor Hendel
    35 * @author Leona Gottwald
    36 */
    37
    38/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    39
    40#ifndef __SCIP_SCIP_PROB_H__
    41#define __SCIP_SCIP_PROB_H__
    42
    43
    44#include "scip/def.h"
    45#include "scip/type_conflict.h"
    46#include "scip/type_cons.h"
    47#include "scip/type_event.h"
    48#include "scip/type_misc.h"
    49#include "scip/type_prob.h"
    50#include "scip/type_rational.h"
    51#include "scip/type_result.h"
    52#include "scip/type_retcode.h"
    53#include "scip/type_scip.h"
    54#include "scip/type_sol.h"
    55#include "scip/type_tree.h"
    56#include "scip/type_var.h"
    57
    58#ifdef __cplusplus
    59extern "C" {
    60#endif
    61
    62/**@addtogroup GlobalProblemMethods
    63 *
    64 * @{
    65 */
    66
    67/** creates empty problem and initializes all solving data structures (the objective sense is set to MINIMIZE)
    68 * If the problem type requires the use of variable pricers, these pricers should be added to the problem with calls
    69 * to SCIPactivatePricer(). These pricers are automatically deactivated, when the problem is freed.
    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 @p scip is in one of the following stages:
    75 * - \ref SCIP_STAGE_INIT
    76 * - \ref SCIP_STAGE_PROBLEM
    77 * - \ref SCIP_STAGE_TRANSFORMED
    78 * - \ref SCIP_STAGE_PRESOLVING
    79 * - \ref SCIP_STAGE_PRESOLVED
    80 * - \ref SCIP_STAGE_SOLVING
    81 * - \ref SCIP_STAGE_SOLVED
    82 * - \ref SCIP_STAGE_FREE
    83 *
    84 * @post After calling this method, \SCIP reaches the following stage:
    85 * - \ref SCIP_STAGE_PROBLEM
    86 */
    87SCIP_EXPORT
    89 SCIP* scip, /**< SCIP data structure */
    90 const char* name, /**< problem name */
    91 SCIP_DECL_PROBDELORIG ((*probdelorig)), /**< frees user data of original problem */
    92 SCIP_DECL_PROBTRANS ((*probtrans)), /**< creates user data of transformed problem by transforming original user data */
    93 SCIP_DECL_PROBDELTRANS((*probdeltrans)), /**< frees user data of transformed problem */
    94 SCIP_DECL_PROBINITSOL ((*probinitsol)), /**< solving process initialization method of transformed data */
    95 SCIP_DECL_PROBEXITSOL ((*probexitsol)), /**< solving process deinitialization method of transformed data */
    96 SCIP_DECL_PROBCOPY ((*probcopy)), /**< copies user data if you want to copy it to a subscip, or NULL */
    97 SCIP_PROBDATA* probdata /**< user problem data set by the reader */
    98 );
    99
    100/** creates empty problem and initializes all solving data structures (the objective sense is set to MINIMIZE)
    101 * all callback methods will be set to NULL and can be set afterwards, if needed, via SCIPsetProbDelorig(),
    102 * SCIPsetProbTrans(), SCIPsetProbDeltrans(), SCIPsetProbInitsol(), SCIPsetProbExitsol(), and
    103 * SCIPsetProbCopy()
    104 * If the problem type requires the use of variable pricers, these pricers should be added to the problem with calls
    105 * to SCIPactivatePricer(). These pricers are automatically deactivated, when the problem is freed.
    106 *
    107 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    108 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    109 *
    110 * @pre This method can be called if @p scip is in one of the following stages:
    111 * - \ref SCIP_STAGE_INIT
    112 * - \ref SCIP_STAGE_PROBLEM
    113 * - \ref SCIP_STAGE_TRANSFORMED
    114 * - \ref SCIP_STAGE_PRESOLVING
    115 * - \ref SCIP_STAGE_PRESOLVED
    116 * - \ref SCIP_STAGE_SOLVING
    117 * - \ref SCIP_STAGE_SOLVED
    118 * - \ref SCIP_STAGE_FREE
    119 *
    120 * @post After calling this method, \SCIP reaches the following stage:
    121 * - \ref SCIP_STAGE_PROBLEM
    122 */
    123SCIP_EXPORT
    125 SCIP* scip, /**< SCIP data structure */
    126 const char* name /**< problem name */
    127 );
    128
    129/** sets callback to free user data of original problem
    130 *
    131 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    132 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    133 *
    134 * @pre This method can be called if @p scip is in one of the following stages:
    135 * - \ref SCIP_STAGE_PROBLEM
    136 */
    137SCIP_EXPORT
    139 SCIP* scip, /**< SCIP data structure */
    140 SCIP_DECL_PROBDELORIG ((*probdelorig)) /**< frees user data of original problem */
    141 );
    142
    143/** sets callback to create user data of transformed problem by transforming original user data
    144 *
    145 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    146 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    147 *
    148 * @pre This method can be called if @p scip is in one of the following stages:
    149 * - \ref SCIP_STAGE_PROBLEM
    150 */
    151SCIP_EXPORT
    153 SCIP* scip, /**< SCIP data structure */
    154 SCIP_DECL_PROBTRANS ((*probtrans)) /**< creates user data of transformed problem by transforming original user data */
    155 );
    156
    157/** sets callback to free user data of transformed problem
    158 *
    159 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    160 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    161 *
    162 * @pre This method can be called if @p scip is in one of the following stages:
    163 * - \ref SCIP_STAGE_PROBLEM
    164 */
    165SCIP_EXPORT
    167 SCIP* scip, /**< SCIP data structure */
    168 SCIP_DECL_PROBDELTRANS((*probdeltrans)) /**< frees user data of transformed problem */
    169 );
    170
    171/** sets solving process initialization callback of transformed data
    172 *
    173 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    174 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    175 *
    176 * @pre This method can be called if @p scip is in one of the following stages:
    177 * - \ref SCIP_STAGE_PROBLEM
    178 */
    179SCIP_EXPORT
    181 SCIP* scip, /**< SCIP data structure */
    182 SCIP_DECL_PROBINITSOL ((*probinitsol)) /**< solving process initialization method of transformed data */
    183 );
    184
    185/** sets solving process deinitialization callback of transformed data
    186 *
    187 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    188 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    189 *
    190 * @pre This method can be called if @p scip is in one of the following stages:
    191 * - \ref SCIP_STAGE_PROBLEM
    192 */
    193SCIP_EXPORT
    195 SCIP* scip, /**< SCIP data structure */
    196 SCIP_DECL_PROBEXITSOL ((*probexitsol)) /**< solving process deinitialization method of transformed data */
    197 );
    198
    199/** sets callback to copy user data to a subscip
    200 *
    201 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    202 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    203 *
    204 * @pre This method can be called if @p scip is in one of the following stages:
    205 * - \ref SCIP_STAGE_PROBLEM
    206 */
    207SCIP_EXPORT
    209 SCIP* scip, /**< SCIP data structure */
    210 SCIP_DECL_PROBCOPY ((*probcopy)) /**< copies user data if you want to copy it to a subscip, or NULL */
    211 );
    212
    213/** reads problem from file and initializes all solving data structures
    214 *
    215 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    216 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    217 *
    218 * @pre This method can be called if @p scip is in one of the following stages:
    219 * - \ref SCIP_STAGE_INIT
    220 * - \ref SCIP_STAGE_PROBLEM
    221 * - \ref SCIP_STAGE_TRANSFORMED
    222 * - \ref SCIP_STAGE_INITPRESOLVE
    223 * - \ref SCIP_STAGE_PRESOLVING
    224 * - \ref SCIP_STAGE_EXITPRESOLVE
    225 * - \ref SCIP_STAGE_PRESOLVED
    226 * - \ref SCIP_STAGE_SOLVING
    227 * - \ref SCIP_STAGE_EXITSOLVE
    228 *
    229 * @post After the method was called, \SCIP is in one of the following stages:
    230 * - \ref SCIP_STAGE_INIT if reading failed (usually, when a SCIP_READERROR occurs)
    231 * - \ref SCIP_STAGE_PROBLEM if the problem file was successfully read
    232 */
    233SCIP_EXPORT
    235 SCIP* scip, /**< SCIP data structure */
    236 const char* filename, /**< problem file name */
    237 const char* extension /**< extension of the desired file reader,
    238 * or NULL if file extension should be used */
    239 );
    240
    241/** outputs original problem to file stream
    242 *
    243 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    244 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    245 *
    246 * @pre This method can be called if SCIP is in one of the following stages:
    247 * - \ref SCIP_STAGE_PROBLEM
    248 * - \ref SCIP_STAGE_TRANSFORMING
    249 * - \ref SCIP_STAGE_TRANSFORMED
    250 * - \ref SCIP_STAGE_INITPRESOLVE
    251 * - \ref SCIP_STAGE_PRESOLVING
    252 * - \ref SCIP_STAGE_EXITPRESOLVE
    253 * - \ref SCIP_STAGE_PRESOLVED
    254 * - \ref SCIP_STAGE_INITSOLVE
    255 * - \ref SCIP_STAGE_SOLVING
    256 * - \ref SCIP_STAGE_SOLVED
    257 * - \ref SCIP_STAGE_EXITSOLVE
    258 * - \ref SCIP_STAGE_FREETRANS
    259 */
    260SCIP_EXPORT
    262 SCIP* scip, /**< SCIP data structure */
    263 FILE* file, /**< output file (or NULL for standard output) */
    264 const char* extension, /**< file format (or NULL for default CIP format)*/
    265 SCIP_Bool genericnames /**< using generic variable and constraint names? */
    266 );
    267
    268/** outputs transformed problem of the current node to file stream
    269 *
    270 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    271 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    272 *
    273 * @pre This method can be called if SCIP is in one of the following stages:
    274 * - \ref SCIP_STAGE_TRANSFORMED
    275 * - \ref SCIP_STAGE_INITPRESOLVE
    276 * - \ref SCIP_STAGE_PRESOLVING
    277 * - \ref SCIP_STAGE_EXITPRESOLVE
    278 * - \ref SCIP_STAGE_PRESOLVED
    279 * - \ref SCIP_STAGE_INITSOLVE
    280 * - \ref SCIP_STAGE_SOLVING
    281 * - \ref SCIP_STAGE_SOLVED
    282 * - \ref SCIP_STAGE_EXITSOLVE
    283 * - \ref SCIP_STAGE_FREETRANS
    284 */
    285SCIP_EXPORT
    287 SCIP* scip, /**< SCIP data structure */
    288 FILE* file, /**< output file (or NULL for standard output) */
    289 const char* extension, /**< file format (or NULL for default CIP format)*/
    290 SCIP_Bool genericnames /**< using generic variable and constraint names? */
    291 );
    292
    293/** writes original problem to file
    294 *
    295 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    296 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    297 *
    298 * @pre This method can be called if @p scip is in one of the following stages:
    299 * - \ref SCIP_STAGE_PROBLEM
    300 * - \ref SCIP_STAGE_TRANSFORMING
    301 * - \ref SCIP_STAGE_TRANSFORMED
    302 * - \ref SCIP_STAGE_INITPRESOLVE
    303 * - \ref SCIP_STAGE_PRESOLVING
    304 * - \ref SCIP_STAGE_EXITPRESOLVE
    305 * - \ref SCIP_STAGE_PRESOLVED
    306 * - \ref SCIP_STAGE_INITSOLVE
    307 * - \ref SCIP_STAGE_SOLVING
    308 * - \ref SCIP_STAGE_SOLVED
    309 * - \ref SCIP_STAGE_EXITSOLVE
    310 * - \ref SCIP_STAGE_FREETRANS
    311 */
    312SCIP_EXPORT
    314 SCIP* scip, /**< SCIP data structure */
    315 const char* filename, /**< output file (or NULL for standard output) */
    316 const char* extension, /**< extension of the desired file reader,
    317 * or NULL if file extension should be used */
    318 SCIP_Bool genericnames /**< use generic variable and constraint names? */
    319 );
    320
    321/** writes transformed problem which are valid in the current node to file
    322 *
    323 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    324 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    325 *
    326 * @pre This method can be called if @p scip is in one of the following stages:
    327 * - \ref SCIP_STAGE_TRANSFORMED
    328 * - \ref SCIP_STAGE_INITPRESOLVE
    329 * - \ref SCIP_STAGE_PRESOLVING
    330 * - \ref SCIP_STAGE_EXITPRESOLVE
    331 * - \ref SCIP_STAGE_PRESOLVED
    332 * - \ref SCIP_STAGE_INITSOLVE
    333 * - \ref SCIP_STAGE_SOLVING
    334 * - \ref SCIP_STAGE_SOLVED
    335 * - \ref SCIP_STAGE_EXITSOLVE
    336 *
    337 * @note If you want the write all constraints (including the once which are redundant for example), you need to set
    338 * the parameter <write/allconss> to TRUE
    339 */
    340SCIP_EXPORT
    342 SCIP* scip, /**< SCIP data structure */
    343 const char* filename, /**< output file (or NULL for standard output) */
    344 const char* extension, /**< extension of the desired file reader,
    345 * or NULL if file extension should be used */
    346 SCIP_Bool genericnames /**< using generic variable and constraint names? */
    347 );
    348
    349/** frees problem and solution process data
    350 *
    351 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    352 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    353 *
    354 * @pre This method can be called if @p scip is in one of the following stages:
    355 * - \ref SCIP_STAGE_INIT
    356 * - \ref SCIP_STAGE_PROBLEM
    357 * - \ref SCIP_STAGE_TRANSFORMED
    358 * - \ref SCIP_STAGE_PRESOLVING
    359 * - \ref SCIP_STAGE_PRESOLVED
    360 * - \ref SCIP_STAGE_SOLVING
    361 * - \ref SCIP_STAGE_SOLVED
    362 * - \ref SCIP_STAGE_FREE
    363 *
    364 * @post After this method was called, SCIP is in the following stage:
    365 * - \ref SCIP_STAGE_INIT
    366 */
    367SCIP_EXPORT
    369 SCIP* scip /**< SCIP data structure */
    370 );
    371
    372/** permutes parts of the problem data structure
    373 *
    374 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    375 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    376 *
    377 * @pre This method can be called if @p scip is in one of the following stages:
    378 * - \ref SCIP_STAGE_PROBLEM
    379 * - \ref SCIP_STAGE_TRANSFORMED
    380 *
    381 * @todo This need to be changed to use the new random number generator implemented in random.c
    382 */
    383SCIP_EXPORT
    385 SCIP* scip, /**< SCIP data structure */
    386 unsigned int randseed, /**< seed value for random generator */
    387 SCIP_Bool permuteconss, /**< should the list of constraints in each constraint handler be permuted? */
    388 SCIP_Bool permutebinvars, /**< should the list of binary variables be permuted? */
    389 SCIP_Bool permuteintvars, /**< should the list of integer variables be permuted? */
    390 SCIP_Bool permutebinimplvars, /**< should the list of binary implied integral vars be permuted? */
    391 SCIP_Bool permuteintimplvars, /**< should the list of integer implied integral vars be permuted? */
    392 SCIP_Bool permutecontimplvars, /**< should the list of continuous implied integral vars be permuted? */
    393 SCIP_Bool permutecontvars /**< should the list of continuous variables be permuted? */
    394 );
    395
    396/** gets user problem data
    397 *
    398 * @return a SCIP_PROBDATA pointer, or NULL if no problem data was allocated
    399 *
    400 * @pre This method can be called if @p scip is in one of the following stages:
    401 * - \ref SCIP_STAGE_PROBLEM
    402 * - \ref SCIP_STAGE_TRANSFORMING
    403 * - \ref SCIP_STAGE_TRANSFORMED
    404 * - \ref SCIP_STAGE_INITPRESOLVE
    405 * - \ref SCIP_STAGE_PRESOLVING
    406 * - \ref SCIP_STAGE_EXITPRESOLVE
    407 * - \ref SCIP_STAGE_PRESOLVED
    408 * - \ref SCIP_STAGE_INITSOLVE
    409 * - \ref SCIP_STAGE_SOLVING
    410 * - \ref SCIP_STAGE_SOLVED
    411 * - \ref SCIP_STAGE_EXITSOLVE
    412 * - \ref SCIP_STAGE_FREETRANS
    413 */
    414SCIP_EXPORT
    416 SCIP* scip /**< SCIP data structure */
    417 );
    418
    419/** sets user problem data
    420 *
    421 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    422 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    423 *
    424 * @pre This method can be called if @p scip is in one of the following stages:
    425 * - \ref SCIP_STAGE_PROBLEM
    426 * - \ref SCIP_STAGE_TRANSFORMING
    427 * - \ref SCIP_STAGE_TRANSFORMED
    428 * - \ref SCIP_STAGE_INITPRESOLVE
    429 * - \ref SCIP_STAGE_PRESOLVING
    430 * - \ref SCIP_STAGE_EXITPRESOLVE
    431 * - \ref SCIP_STAGE_PRESOLVED
    432 * - \ref SCIP_STAGE_INITSOLVE
    433 * - \ref SCIP_STAGE_SOLVING
    434 * - \ref SCIP_STAGE_SOLVED
    435 * - \ref SCIP_STAGE_EXITSOLVE
    436 * - \ref SCIP_STAGE_FREETRANS
    437 */
    438SCIP_EXPORT
    440 SCIP* scip, /**< SCIP data structure */
    441 SCIP_PROBDATA* probdata /**< user problem data to use */
    442 );
    443
    444/** returns name of the current problem instance
    445 *
    446 * @return name of the current problem instance
    447 *
    448 * @pre This method can be called if @p scip is in one of the following stages:
    449 * - \ref SCIP_STAGE_PROBLEM
    450 * - \ref SCIP_STAGE_TRANSFORMING
    451 * - \ref SCIP_STAGE_TRANSFORMED
    452 * - \ref SCIP_STAGE_INITPRESOLVE
    453 * - \ref SCIP_STAGE_PRESOLVING
    454 * - \ref SCIP_STAGE_EXITPRESOLVE
    455 * - \ref SCIP_STAGE_PRESOLVED
    456 * - \ref SCIP_STAGE_INITSOLVE
    457 * - \ref SCIP_STAGE_SOLVING
    458 * - \ref SCIP_STAGE_SOLVED
    459 * - \ref SCIP_STAGE_EXITSOLVE
    460 * - \ref SCIP_STAGE_FREETRANS
    461 */
    462SCIP_EXPORT
    463const char* SCIPgetProbName(
    464 SCIP* scip /**< SCIP data structure */
    465 );
    466
    467/** sets name of the current problem instance
    468 *
    469 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    470 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    471 *
    472 * @pre This method can be called if @p scip is in one of the following stages:
    473 * - \ref SCIP_STAGE_PROBLEM
    474 * - \ref SCIP_STAGE_TRANSFORMING
    475 * - \ref SCIP_STAGE_TRANSFORMED
    476 * - \ref SCIP_STAGE_INITPRESOLVE
    477 * - \ref SCIP_STAGE_PRESOLVING
    478 * - \ref SCIP_STAGE_EXITPRESOLVE
    479 * - \ref SCIP_STAGE_PRESOLVED
    480 * - \ref SCIP_STAGE_INITSOLVE
    481 * - \ref SCIP_STAGE_SOLVING
    482 * - \ref SCIP_STAGE_SOLVED
    483 * - \ref SCIP_STAGE_EXITSOLVE
    484 * - \ref SCIP_STAGE_FREETRANS
    485 */
    486SCIP_EXPORT
    488 SCIP* scip, /**< SCIP data structure */
    489 const char* name /**< name to be set */
    490 );
    491
    492/** changes the objective function of the original problem.
    493 *
    494 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    495 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    496 *
    497 * @pre This method can be called if @p scip is in one of the following stages:
    498 * - \ref SCIP_STAGE_PROBLEM
    499 * - \ref SCIP_STAGE_PRESOLVED
    500 *
    501 * @note This method should be only used to change the objective function during two reoptimization runs and is only
    502 * recommended to an experienced user.
    503 *
    504 * @note All variables not given in \p vars array are assumed to have an objective coefficient of zero.
    505 */
    506SCIP_EXPORT
    508 SCIP* scip, /**< SCIP data structure */
    509 SCIP_OBJSENSE objsense, /**< new objective function */
    510 SCIP_VAR** vars, /**< problem variables */
    511 SCIP_Real* coefs, /**< objective coefficients */
    512 int nvars /**< variables in vars array */
    513 );
    514
    515/** returns objective sense of original problem
    516 *
    517 * @return objective sense of original problem
    518 *
    519 * @pre This method can be called if @p scip is in one of the following stages:
    520 * - \ref SCIP_STAGE_PROBLEM
    521 * - \ref SCIP_STAGE_TRANSFORMING
    522 * - \ref SCIP_STAGE_TRANSFORMED
    523 * - \ref SCIP_STAGE_INITPRESOLVE
    524 * - \ref SCIP_STAGE_PRESOLVING
    525 * - \ref SCIP_STAGE_EXITPRESOLVE
    526 * - \ref SCIP_STAGE_PRESOLVED
    527 * - \ref SCIP_STAGE_INITSOLVE
    528 * - \ref SCIP_STAGE_SOLVING
    529 * - \ref SCIP_STAGE_SOLVED
    530 * - \ref SCIP_STAGE_EXITSOLVE
    531 * - \ref SCIP_STAGE_FREETRANS
    532 */
    533SCIP_EXPORT
    535 SCIP* scip /**< SCIP data structure */
    536 );
    537
    538/** sets objective sense of problem
    539 *
    540 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    541 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    542 *
    543 * @pre This method can be called if @p scip is in one of the following stages:
    544 * - \ref SCIP_STAGE_PROBLEM
    545 */
    546SCIP_EXPORT
    548 SCIP* scip, /**< SCIP data structure */
    549 SCIP_OBJSENSE objsense /**< new objective sense */
    550 );
    551
    552/** adds offset of objective function
    553 *
    554 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    555 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    556 *
    557 * @pre This method can be called if @p scip is in one of the following stages:
    558 * - \ref SCIP_STAGE_PRESOLVING
    559 */
    560SCIP_EXPORT
    562 SCIP* scip, /**< SCIP data structure */
    563 SCIP_Real addval /**< value to add to objective offset */
    564 );
    565
    566/** adds offset of objective function to original problem and to all existing solution in original space
    567 *
    568 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    569 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    570 *
    571 * @pre This method can be called if @p scip is in one of the following stages:
    572 * - \ref SCIP_STAGE_PROBLEM
    573 */
    574SCIP_EXPORT
    576 SCIP* scip, /**< SCIP data structure */
    577 SCIP_RATIONAL* addval /**< value to add to objective offset */
    578 );
    579
    580/** adds offset of objective function to original problem and to all existing solution in original space
    581 *
    582 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    583 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    584 *
    585 * @pre This method can be called if @p scip is in one of the following stages:
    586 * - \ref SCIP_STAGE_PROBLEM
    587 */
    588SCIP_EXPORT
    590 SCIP* scip, /**< SCIP data structure */
    591 SCIP_Real addval /**< value to add to objective offset */
    592 );
    593
    594/** returns the objective offset of the original problem
    595 *
    596 * @return the objective offset of the original problem
    597 *
    598 * @pre This method can be called if @p scip is in one of the following stages:
    599 * - \ref SCIP_STAGE_PROBLEM
    600 * - \ref SCIP_STAGE_TRANSFORMING
    601 * - \ref SCIP_STAGE_TRANSFORMED
    602 * - \ref SCIP_STAGE_INITPRESOLVE
    603 * - \ref SCIP_STAGE_PRESOLVING
    604 * - \ref SCIP_STAGE_EXITPRESOLVE
    605 * - \ref SCIP_STAGE_PRESOLVED
    606 * - \ref SCIP_STAGE_INITSOLVE
    607 * - \ref SCIP_STAGE_SOLVING
    608 * - \ref SCIP_STAGE_SOLVED
    609 */
    610SCIP_EXPORT
    612 SCIP* scip /**< SCIP data structure */
    613 );
    614
    615/** returns the exact objective offset of the original problem
    616 *
    617 * DO NOT MODIFY THE POINTER RETURNED BY THIS METHOD
    618 *
    619 * @return the exact objective offset of the original problem
    620 *
    621 * @pre This method can be called if @p scip is in one of the following stages:
    622 * - \ref SCIP_STAGE_PROBLEM
    623 * - \ref SCIP_STAGE_TRANSFORMING
    624 * - \ref SCIP_STAGE_TRANSFORMED
    625 * - \ref SCIP_STAGE_INITPRESOLVE
    626 * - \ref SCIP_STAGE_PRESOLVING
    627 * - \ref SCIP_STAGE_EXITPRESOLVE
    628 * - \ref SCIP_STAGE_PRESOLVED
    629 * - \ref SCIP_STAGE_INITSOLVE
    630 * - \ref SCIP_STAGE_SOLVING
    631 * - \ref SCIP_STAGE_SOLVED
    632 */
    633SCIP_EXPORT
    635 SCIP* scip /**< SCIP data structure */
    636 );
    637
    638/** returns the objective scale of the original problem
    639 *
    640 * @return the objective scale of the original problem
    641 *
    642 * @pre This method can be called if @p scip is in one of the following stages:
    643 * - \ref SCIP_STAGE_PROBLEM
    644 * - \ref SCIP_STAGE_TRANSFORMING
    645 * - \ref SCIP_STAGE_TRANSFORMED
    646 * - \ref SCIP_STAGE_INITPRESOLVE
    647 * - \ref SCIP_STAGE_PRESOLVING
    648 * - \ref SCIP_STAGE_EXITPRESOLVE
    649 * - \ref SCIP_STAGE_PRESOLVED
    650 * - \ref SCIP_STAGE_INITSOLVE
    651 * - \ref SCIP_STAGE_SOLVING
    652 * - \ref SCIP_STAGE_SOLVED
    653 */
    654SCIP_EXPORT
    656 SCIP* scip /**< SCIP data structure */
    657 );
    658
    659/** returns the objective offset of the transformed problem
    660 *
    661 * @return the objective offset of the transformed problem
    662 *
    663 * @pre This method can be called if @p scip is in one of the following stages:
    664 * - \ref SCIP_STAGE_TRANSFORMED
    665 * - \ref SCIP_STAGE_INITPRESOLVE
    666 * - \ref SCIP_STAGE_PRESOLVING
    667 * - \ref SCIP_STAGE_EXITPRESOLVE
    668 * - \ref SCIP_STAGE_PRESOLVED
    669 * - \ref SCIP_STAGE_INITSOLVE
    670 * - \ref SCIP_STAGE_SOLVING
    671 * - \ref SCIP_STAGE_SOLVED
    672 */
    673SCIP_EXPORT
    675 SCIP* scip /**< SCIP data structure */
    676 );
    677
    678/** returns the objective scale of the transformed problem
    679 *
    680 * @return the objective scale of the transformed problem
    681 *
    682 * @pre This method can be called if @p scip is in one of the following stages:
    683 * - \ref SCIP_STAGE_TRANSFORMED
    684 * - \ref SCIP_STAGE_INITPRESOLVE
    685 * - \ref SCIP_STAGE_PRESOLVING
    686 * - \ref SCIP_STAGE_EXITPRESOLVE
    687 * - \ref SCIP_STAGE_PRESOLVED
    688 * - \ref SCIP_STAGE_INITSOLVE
    689 * - \ref SCIP_STAGE_SOLVING
    690 * - \ref SCIP_STAGE_SOLVED
    691 */
    692SCIP_EXPORT
    694 SCIP* scip /**< SCIP data structure */
    695 );
    696
    697/** sets limit on objective function, such that only solutions better than this limit are accepted
    698 *
    699 * @note SCIP will only look for solutions with a strictly better objective value, thus, e.g., prune
    700 * all branch-and-bound nodes with dual bound equal or worse to the objective limit.
    701 * However, SCIP will also collect solutions with objective value worse than the objective limit and
    702 * use them to run improvement heuristics on them.
    703 * @note If SCIP can prove that there exists no solution with a strictly better objective value, the solving status
    704 * will normally be infeasible (the objective limit is interpreted as part of the problem).
    705 * The only exception is that by chance, SCIP found a solution with the same objective value and thus
    706 * proved the optimality of this solution, resulting in solution status optimal.
    707 *
    708 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    709 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    710 *
    711 * @pre This method can be called if @p scip is in one of the following stages:
    712 * - \ref SCIP_STAGE_PROBLEM
    713 * - \ref SCIP_STAGE_TRANSFORMED
    714 * - \ref SCIP_STAGE_INITPRESOLVE
    715 * - \ref SCIP_STAGE_PRESOLVING
    716 * - \ref SCIP_STAGE_EXITPRESOLVE
    717 * - \ref SCIP_STAGE_PRESOLVED
    718 * - \ref SCIP_STAGE_SOLVING
    719 */
    720SCIP_EXPORT
    722 SCIP* scip, /**< SCIP data structure */
    723 SCIP_Real objlimit /**< new primal objective limit */
    724 );
    725
    726/** returns current limit on objective function
    727 *
    728 * @return the current objective limit of the original problem
    729 *
    730 * @pre This method can be called if @p scip is in one of the following stages:
    731 * - \ref SCIP_STAGE_PROBLEM
    732 * - \ref SCIP_STAGE_TRANSFORMING
    733 * - \ref SCIP_STAGE_TRANSFORMED
    734 * - \ref SCIP_STAGE_INITPRESOLVE
    735 * - \ref SCIP_STAGE_PRESOLVING
    736 * - \ref SCIP_STAGE_EXITPRESOLVE
    737 * - \ref SCIP_STAGE_PRESOLVED
    738 * - \ref SCIP_STAGE_INITSOLVE
    739 * - \ref SCIP_STAGE_SOLVING
    740 * - \ref SCIP_STAGE_SOLVED
    741 */
    742SCIP_EXPORT
    744 SCIP* scip /**< SCIP data structure */
    745 );
    746
    747/** informs SCIP, that the objective value is always integral in every feasible solution
    748 *
    749 * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
    750 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    751 *
    752 * @pre This method can be called if @p scip is in one of the following stages:
    753 * - \ref SCIP_STAGE_PROBLEM
    754 * - \ref SCIP_STAGE_TRANSFORMING
    755 * - \ref SCIP_STAGE_INITPRESOLVE
    756 * - \ref SCIP_STAGE_EXITPRESOLVE
    757 * - \ref SCIP_STAGE_SOLVING
    758 *
    759 * @note This function should be used to inform SCIP that the objective function is integral, helping to improve the
    760 * performance. This is useful when using column generation. If no column generation (pricing) is used, SCIP
    761 * automatically detects whether the objective function is integral or can be scaled to be integral. However, in
    762 * any case, the user has to make sure that no variable is added during the solving process that destroys this
    763 * property.
    764 */
    765SCIP_EXPORT
    767 SCIP* scip /**< SCIP data structure */
    768 );
    769
    770/** returns whether the objective value is known to be integral in every feasible solution
    771 *
    772 * @return TRUE, if objective value is known to be always integral, otherwise FALSE
    773 *
    774 * @pre This method can be called if @p scip is in one of the following stages:
    775 * - \ref SCIP_STAGE_PROBLEM
    776 * - \ref SCIP_STAGE_TRANSFORMING
    777 * - \ref SCIP_STAGE_INITPRESOLVE
    778 * - \ref SCIP_STAGE_PRESOLVING
    779 * - \ref SCIP_STAGE_EXITPRESOLVE
    780 * - \ref SCIP_STAGE_PRESOLVED
    781 * - \ref SCIP_STAGE_SOLVING
    782 *
    783 * @note If no pricing is performed, SCIP automatically detects whether the objective function is integral or can be
    784 * scaled to be integral, helping to improve performance. This function returns the result. Otherwise
    785 * SCIPsetObjIntegral() can be used to inform SCIP. However, in any case, the user has to make sure that no
    786 * variable is added during the solving process that destroys this property.
    787 */
    788SCIP_EXPORT
    790 SCIP* scip /**< SCIP data structure */
    791 );
    792
    793/** returns the Euclidean norm of the objective function vector (available only for transformed problem)
    794 *
    795 * @return the Euclidean norm of the transformed objective function vector
    796 *
    797 * @pre This method can be called if @p scip is in one of the following stages:
    798 * - \ref SCIP_STAGE_TRANSFORMED
    799 * - \ref SCIP_STAGE_INITPRESOLVE
    800 * - \ref SCIP_STAGE_PRESOLVING
    801 * - \ref SCIP_STAGE_EXITPRESOLVE
    802 * - \ref SCIP_STAGE_PRESOLVED
    803 * - \ref SCIP_STAGE_INITSOLVE
    804 * - \ref SCIP_STAGE_SOLVING
    805 * - \ref SCIP_STAGE_SOLVED
    806 * - \ref SCIP_STAGE_EXITSOLVE
    807 */
    808SCIP_EXPORT
    810 SCIP* scip /**< SCIP data structure */
    811 );
    812
    813/** adds variable to the problem
    814 *
    815 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    816 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    817 *
    818 * @pre This method can be called if @p scip is in one of the following stages:
    819 * - \ref SCIP_STAGE_PROBLEM
    820 * - \ref SCIP_STAGE_TRANSFORMING
    821 * - \ref SCIP_STAGE_INITPRESOLVE
    822 * - \ref SCIP_STAGE_PRESOLVING
    823 * - \ref SCIP_STAGE_EXITPRESOLVE
    824 * - \ref SCIP_STAGE_PRESOLVED
    825 * - \ref SCIP_STAGE_SOLVING
    826 */
    827SCIP_EXPORT
    829 SCIP* scip, /**< SCIP data structure */
    830 SCIP_VAR* var /**< variable to add */
    831 );
    832
    833/** adds variable to the problem and uses it as pricing candidate to enter the LP
    834 *
    835 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    836 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    837 *
    838 * @pre This method can only be called if @p scip is in stage \ref SCIP_STAGE_SOLVING
    839 */
    840SCIP_EXPORT
    842 SCIP* scip, /**< SCIP data structure */
    843 SCIP_VAR* var, /**< variable to add */
    844 SCIP_Real score /**< pricing score of variable (the larger, the better the variable) */
    845 );
    846
    847/** removes variable from the problem
    848 *
    849 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    850 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    851 *
    852 * @warning The variable is not deleted from the constraints when in SCIP_STAGE_PROBLEM. In this stage, it is the
    853 * user's responsibility to ensure the variable has been removed from all constraints or the constraints
    854 * deleted.
    855 *
    856 * @pre This method can be called if @p scip is in one of the following stages:
    857 * - \ref SCIP_STAGE_PROBLEM
    858 * - \ref SCIP_STAGE_TRANSFORMING
    859 * - \ref SCIP_STAGE_TRANSFORMED
    860 * - \ref SCIP_STAGE_PRESOLVING
    861 * - \ref SCIP_STAGE_FREETRANS
    862 *
    863 * @warning The variable is not deleted from the constraints when in SCIP_STAGE_PROBLEM. In this stage, it is the
    864 * user's responsibility to ensure the variable has been removed from all constraints or the constraints
    865 * deleted.
    866 */
    867SCIP_EXPORT
    869 SCIP* scip, /**< SCIP data structure */
    870 SCIP_VAR* var, /**< variable to delete */
    871 SCIP_Bool* deleted /**< pointer to store whether marking variable to be deleted was successful */
    872 );
    873
    874/** gets variables of the problem along with the numbers of different variable types; data may become invalid after
    875 * calls to SCIPchgVarType(), SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar()
    876 *
    877 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    878 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    879 *
    880 * @pre This method can be called if @p scip is in one of the following stages:
    881 * - \ref SCIP_STAGE_PROBLEM
    882 * - \ref SCIP_STAGE_TRANSFORMED
    883 * - \ref SCIP_STAGE_INITPRESOLVE
    884 * - \ref SCIP_STAGE_PRESOLVING
    885 * - \ref SCIP_STAGE_EXITPRESOLVE
    886 * - \ref SCIP_STAGE_PRESOLVED
    887 * - \ref SCIP_STAGE_INITSOLVE
    888 * - \ref SCIP_STAGE_SOLVING
    889 * - \ref SCIP_STAGE_SOLVED
    890 * - \ref SCIP_STAGE_EXITSOLVE
    891 */
    892SCIP_EXPORT
    894 SCIP* scip, /**< SCIP data structure */
    895 SCIP_VAR*** vars, /**< pointer to store variables array or NULL if not needed */
    896 int* nvars, /**< pointer to store number of variables or NULL if not needed */
    897 int* nbinvars, /**< pointer to store number of binary variables or NULL if not needed */
    898 int* nintvars, /**< pointer to store number of integer variables or NULL if not needed */
    899 int* nimplvars, /**< pointer to store number of implied integral vars or NULL if not needed */
    900 int* ncontvars /**< pointer to store number of continuous variables or NULL if not needed */
    901 );
    902
    903/** gets array with active problem variables
    904 *
    905 * @return array with active problem variables
    906 *
    907 * @note Variables in the array are grouped in following order:
    908 * - binaries
    909 * - integers
    910 * - implied integral binaries
    911 * - implied integral integers
    912 * - implied integral continuous
    913 * - continuous
    914 *
    915 * @warning Modifying a variable status (e.g. with SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar())
    916 * or a variable type (e.g. with SCIPchgVarType() and SCIPchgVarImplType())
    917 * may invalidate or resort the data array.
    918 *
    919 * @pre This method can be called if @p scip is in one of the following stages:
    920 * - \ref SCIP_STAGE_PROBLEM
    921 * - \ref SCIP_STAGE_TRANSFORMED
    922 * - \ref SCIP_STAGE_INITPRESOLVE
    923 * - \ref SCIP_STAGE_PRESOLVING
    924 * - \ref SCIP_STAGE_EXITPRESOLVE
    925 * - \ref SCIP_STAGE_PRESOLVED
    926 * - \ref SCIP_STAGE_INITSOLVE
    927 * - \ref SCIP_STAGE_SOLVING
    928 * - \ref SCIP_STAGE_SOLVED
    929 * - \ref SCIP_STAGE_EXITSOLVE
    930 */
    931SCIP_EXPORT
    933 SCIP* scip /**< SCIP data structure */
    934 );
    935
    936/** gets number of active problem variables
    937 *
    938 * @return the number of active problem variables
    939 *
    940 * @pre This method can be called if @p scip is in one of the following stages:
    941 * - \ref SCIP_STAGE_PROBLEM
    942 * - \ref SCIP_STAGE_TRANSFORMED
    943 * - \ref SCIP_STAGE_INITPRESOLVE
    944 * - \ref SCIP_STAGE_PRESOLVING
    945 * - \ref SCIP_STAGE_EXITPRESOLVE
    946 * - \ref SCIP_STAGE_PRESOLVED
    947 * - \ref SCIP_STAGE_INITSOLVE
    948 * - \ref SCIP_STAGE_SOLVING
    949 * - \ref SCIP_STAGE_SOLVED
    950 * - \ref SCIP_STAGE_EXITSOLVE
    951 */
    952SCIP_EXPORT
    953int SCIPgetNVars(
    954 SCIP* scip /**< SCIP data structure */
    955 );
    956
    957/** gets number of binary active problem variables
    958 *
    959 * @return the number of binary active problem variables
    960 *
    961 * @note This function does not count binary variables which are implied integral.
    962 *
    963 * @pre This method can be called if @p scip is in one of the following stages:
    964 * - \ref SCIP_STAGE_PROBLEM
    965 * - \ref SCIP_STAGE_TRANSFORMED
    966 * - \ref SCIP_STAGE_INITPRESOLVE
    967 * - \ref SCIP_STAGE_PRESOLVING
    968 * - \ref SCIP_STAGE_EXITPRESOLVE
    969 * - \ref SCIP_STAGE_PRESOLVED
    970 * - \ref SCIP_STAGE_INITSOLVE
    971 * - \ref SCIP_STAGE_SOLVING
    972 * - \ref SCIP_STAGE_SOLVED
    973 * - \ref SCIP_STAGE_EXITSOLVE
    974 */
    975SCIP_EXPORT
    977 SCIP* scip /**< SCIP data structure */
    978 );
    979
    980/** gets number of integer active problem variables
    981 *
    982 * @return the number of integer active problem variables
    983 *
    984 * @note This function does not count integer variables which are implied integral.
    985 *
    986 * @pre This method can be called if @p scip is in one of the following stages:
    987 * - \ref SCIP_STAGE_PROBLEM
    988 * - \ref SCIP_STAGE_TRANSFORMED
    989 * - \ref SCIP_STAGE_INITPRESOLVE
    990 * - \ref SCIP_STAGE_PRESOLVING
    991 * - \ref SCIP_STAGE_EXITPRESOLVE
    992 * - \ref SCIP_STAGE_PRESOLVED
    993 * - \ref SCIP_STAGE_INITSOLVE
    994 * - \ref SCIP_STAGE_SOLVING
    995 * - \ref SCIP_STAGE_SOLVED
    996 * - \ref SCIP_STAGE_EXITSOLVE
    997 */
    998SCIP_EXPORT
    1000 SCIP* scip /**< SCIP data structure */
    1001 );
    1002
    1003/** gets number of implied integral active problem variables
    1004 *
    1005 * @return the number of implied integral active problem variables
    1006 *
    1007 * @note This function counts binary, integer, and continuous variables which are implied integral.
    1008 *
    1009 * @pre This method can be called if @p scip is in one of the following stages:
    1010 * - \ref SCIP_STAGE_PROBLEM
    1011 * - \ref SCIP_STAGE_TRANSFORMED
    1012 * - \ref SCIP_STAGE_INITPRESOLVE
    1013 * - \ref SCIP_STAGE_PRESOLVING
    1014 * - \ref SCIP_STAGE_EXITPRESOLVE
    1015 * - \ref SCIP_STAGE_PRESOLVED
    1016 * - \ref SCIP_STAGE_INITSOLVE
    1017 * - \ref SCIP_STAGE_SOLVING
    1018 * - \ref SCIP_STAGE_SOLVED
    1019 * - \ref SCIP_STAGE_EXITSOLVE
    1020 */
    1021SCIP_EXPORT
    1023 SCIP* scip /**< SCIP data structure */
    1024 );
    1025
    1026/** gets number of binary implied integral active problem variables
    1027 *
    1028 * @return the number of binary implied integral active problem variables
    1029 *
    1030 * @pre This method can be called if @p scip is in one of the following stages:
    1031 * - \ref SCIP_STAGE_PROBLEM
    1032 * - \ref SCIP_STAGE_TRANSFORMED
    1033 * - \ref SCIP_STAGE_INITPRESOLVE
    1034 * - \ref SCIP_STAGE_PRESOLVING
    1035 * - \ref SCIP_STAGE_EXITPRESOLVE
    1036 * - \ref SCIP_STAGE_PRESOLVED
    1037 * - \ref SCIP_STAGE_INITSOLVE
    1038 * - \ref SCIP_STAGE_SOLVING
    1039 * - \ref SCIP_STAGE_SOLVED
    1040 * - \ref SCIP_STAGE_EXITSOLVE
    1041 */
    1042SCIP_EXPORT
    1044 SCIP* scip /**< SCIP data structure */
    1045 );
    1046
    1047/** gets number of integer implied integral active problem variables
    1048 *
    1049 * @return the number of integer implied integral active problem variables
    1050 *
    1051 * @pre This method can be called if @p scip is in one of the following stages:
    1052 * - \ref SCIP_STAGE_PROBLEM
    1053 * - \ref SCIP_STAGE_TRANSFORMED
    1054 * - \ref SCIP_STAGE_INITPRESOLVE
    1055 * - \ref SCIP_STAGE_PRESOLVING
    1056 * - \ref SCIP_STAGE_EXITPRESOLVE
    1057 * - \ref SCIP_STAGE_PRESOLVED
    1058 * - \ref SCIP_STAGE_INITSOLVE
    1059 * - \ref SCIP_STAGE_SOLVING
    1060 * - \ref SCIP_STAGE_SOLVED
    1061 * - \ref SCIP_STAGE_EXITSOLVE
    1062 */
    1063SCIP_EXPORT
    1065 SCIP* scip /**< SCIP data structure */
    1066 );
    1067
    1068/** gets number of continuous implied integral active problem variables
    1069 *
    1070 * @return the number of continuous implied integral active problem variables
    1071 *
    1072 * @pre This method can be called if @p scip is in one of the following stages:
    1073 * - \ref SCIP_STAGE_PROBLEM
    1074 * - \ref SCIP_STAGE_TRANSFORMED
    1075 * - \ref SCIP_STAGE_INITPRESOLVE
    1076 * - \ref SCIP_STAGE_PRESOLVING
    1077 * - \ref SCIP_STAGE_EXITPRESOLVE
    1078 * - \ref SCIP_STAGE_PRESOLVED
    1079 * - \ref SCIP_STAGE_INITSOLVE
    1080 * - \ref SCIP_STAGE_SOLVING
    1081 * - \ref SCIP_STAGE_SOLVED
    1082 * - \ref SCIP_STAGE_EXITSOLVE
    1083 */
    1084SCIP_EXPORT
    1086 SCIP* scip /**< SCIP data structure */
    1087 );
    1088
    1089/** gets number of continuous active problem variables
    1090 *
    1091 * @return the number of continuous active problem variables
    1092 *
    1093 * @note This function does not count continuous variables which are implied integral.
    1094 *
    1095 * @pre This method can be called if @p scip is in one of the following stages:
    1096 * - \ref SCIP_STAGE_PROBLEM
    1097 * - \ref SCIP_STAGE_TRANSFORMED
    1098 * - \ref SCIP_STAGE_INITPRESOLVE
    1099 * - \ref SCIP_STAGE_PRESOLVING
    1100 * - \ref SCIP_STAGE_EXITPRESOLVE
    1101 * - \ref SCIP_STAGE_PRESOLVED
    1102 * - \ref SCIP_STAGE_INITSOLVE
    1103 * - \ref SCIP_STAGE_SOLVING
    1104 * - \ref SCIP_STAGE_SOLVED
    1105 * - \ref SCIP_STAGE_EXITSOLVE
    1106 */
    1107SCIP_EXPORT
    1109 SCIP* scip /**< SCIP data structure */
    1110 );
    1111
    1112/** gets number of active problem variables with a non-zero objective coefficient
    1113 *
    1114 * @note In case of the original problem the number of variables is counted. In case of the transformed problem the
    1115 * number of variables is just returned since it is stored internally
    1116 *
    1117 * @return the number of active problem variables with a non-zero objective coefficient
    1118 *
    1119 * @pre This method can be called if @p scip is in one of the following stages:
    1120 * - \ref SCIP_STAGE_PROBLEM
    1121 * - \ref SCIP_STAGE_TRANSFORMED
    1122 * - \ref SCIP_STAGE_INITPRESOLVE
    1123 * - \ref SCIP_STAGE_PRESOLVING
    1124 * - \ref SCIP_STAGE_EXITPRESOLVE
    1125 * - \ref SCIP_STAGE_PRESOLVED
    1126 * - \ref SCIP_STAGE_INITSOLVE
    1127 * - \ref SCIP_STAGE_SOLVING
    1128 * - \ref SCIP_STAGE_SOLVED
    1129 */
    1130SCIP_EXPORT
    1131int SCIPgetNObjVars(
    1132 SCIP* scip /**< SCIP data structure */
    1133 );
    1134
    1135/** gets array with fixed and aggregated problem variables; data may become invalid after
    1136 * calls to SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar()
    1137 *
    1138 * @return an array with fixed and aggregated problem variables; data may become invalid after
    1139 * calls to SCIPfixVar(), SCIPaggregateVars(), and SCIPmultiaggregateVar()
    1140 *
    1141 * @pre This method can be called if @p scip is in one of the following stages:
    1142 * - \ref SCIP_STAGE_PROBLEM
    1143 * - \ref SCIP_STAGE_TRANSFORMED
    1144 * - \ref SCIP_STAGE_INITPRESOLVE
    1145 * - \ref SCIP_STAGE_PRESOLVING
    1146 * - \ref SCIP_STAGE_EXITPRESOLVE
    1147 * - \ref SCIP_STAGE_PRESOLVED
    1148 * - \ref SCIP_STAGE_INITSOLVE
    1149 * - \ref SCIP_STAGE_SOLVING
    1150 * - \ref SCIP_STAGE_SOLVED
    1151 */
    1152SCIP_EXPORT
    1154 SCIP* scip /**< SCIP data structure */
    1155 );
    1156
    1157/** gets number of fixed or aggregated problem variables
    1158 *
    1159 * @return the number of fixed or aggregated problem variables
    1160 *
    1161 * @pre This method can be called if @p scip is in one of the following stages:
    1162 * - \ref SCIP_STAGE_PROBLEM
    1163 * - \ref SCIP_STAGE_TRANSFORMED
    1164 * - \ref SCIP_STAGE_INITPRESOLVE
    1165 * - \ref SCIP_STAGE_PRESOLVING
    1166 * - \ref SCIP_STAGE_EXITPRESOLVE
    1167 * - \ref SCIP_STAGE_PRESOLVED
    1168 * - \ref SCIP_STAGE_INITSOLVE
    1169 * - \ref SCIP_STAGE_SOLVING
    1170 * - \ref SCIP_STAGE_SOLVED
    1171 */
    1172SCIP_EXPORT
    1174 SCIP* scip /**< SCIP data structure */
    1175 );
    1176
    1177/** gets variables of the original problem along with the numbers of different variable types; data may become invalid
    1178 * after a call to SCIPchgVarType()
    1179 *
    1180 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1181 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1182 *
    1183 * @pre This method can be called if @p scip is in one of the following stages:
    1184 * - \ref SCIP_STAGE_PROBLEM
    1185 * - \ref SCIP_STAGE_TRANSFORMING
    1186 * - \ref SCIP_STAGE_TRANSFORMED
    1187 * - \ref SCIP_STAGE_INITPRESOLVE
    1188 * - \ref SCIP_STAGE_PRESOLVING
    1189 * - \ref SCIP_STAGE_EXITPRESOLVE
    1190 * - \ref SCIP_STAGE_PRESOLVED
    1191 * - \ref SCIP_STAGE_INITSOLVE
    1192 * - \ref SCIP_STAGE_SOLVING
    1193 * - \ref SCIP_STAGE_SOLVED
    1194 * - \ref SCIP_STAGE_EXITSOLVE
    1195 * - \ref SCIP_STAGE_FREETRANS
    1196 */
    1197SCIP_EXPORT
    1199 SCIP* scip, /**< SCIP data structure */
    1200 SCIP_VAR*** vars, /**< pointer to store variables array or NULL if not needed */
    1201 int* nvars, /**< pointer to store number of variables or NULL if not needed */
    1202 int* nbinvars, /**< pointer to store number of binary variables or NULL if not needed */
    1203 int* nintvars, /**< pointer to store number of integer variables or NULL if not needed */
    1204 int* nimplvars, /**< pointer to store number of implied integral vars or NULL if not needed */
    1205 int* ncontvars /**< pointer to store number of continuous variables or NULL if not needed */
    1206 );
    1207
    1208/** gets array with original problem variables
    1209 *
    1210 * @return array with original problem variables
    1211 *
    1212 * @note Variables in the array are grouped in following order:
    1213 * - binaries
    1214 * - integers
    1215 * - implied integral binaries
    1216 * - implied integral integers
    1217 * - implied integral continuous
    1218 * - continuous
    1219 *
    1220 * @warning Modifying the variable number (e.g. with SCIPaddVar() and SCIPdelVar())
    1221 * or a variable type (e.g. with SCIPchgVarType() and SCIPchgVarImplType())
    1222 * may invalidate or resort the data array.
    1223 *
    1224 * @pre This method can be called if @p scip is in one of the following stages:
    1225 * - \ref SCIP_STAGE_PROBLEM
    1226 * - \ref SCIP_STAGE_TRANSFORMING
    1227 * - \ref SCIP_STAGE_TRANSFORMED
    1228 * - \ref SCIP_STAGE_INITPRESOLVE
    1229 * - \ref SCIP_STAGE_PRESOLVING
    1230 * - \ref SCIP_STAGE_EXITPRESOLVE
    1231 * - \ref SCIP_STAGE_PRESOLVED
    1232 * - \ref SCIP_STAGE_INITSOLVE
    1233 * - \ref SCIP_STAGE_SOLVING
    1234 * - \ref SCIP_STAGE_SOLVED
    1235 * - \ref SCIP_STAGE_EXITSOLVE
    1236 * - \ref SCIP_STAGE_FREETRANS
    1237 */
    1238SCIP_EXPORT
    1240 SCIP* scip /**< SCIP data structure */
    1241 );
    1242
    1243/** gets number of original problem variables
    1244 *
    1245 * @return the number of original problem variables
    1246 *
    1247 * @pre This method can be called if @p scip is in one of the following stages:
    1248 * - \ref SCIP_STAGE_PROBLEM
    1249 * - \ref SCIP_STAGE_TRANSFORMING
    1250 * - \ref SCIP_STAGE_TRANSFORMED
    1251 * - \ref SCIP_STAGE_INITPRESOLVE
    1252 * - \ref SCIP_STAGE_PRESOLVING
    1253 * - \ref SCIP_STAGE_EXITPRESOLVE
    1254 * - \ref SCIP_STAGE_PRESOLVED
    1255 * - \ref SCIP_STAGE_INITSOLVE
    1256 * - \ref SCIP_STAGE_SOLVING
    1257 * - \ref SCIP_STAGE_SOLVED
    1258 * - \ref SCIP_STAGE_EXITSOLVE
    1259 * - \ref SCIP_STAGE_FREETRANS
    1260 */
    1261SCIP_EXPORT
    1263 SCIP* scip /**< SCIP data structure */
    1264 );
    1265
    1266/** gets number of binary variables in the original problem
    1267 *
    1268 * @return the number of binary variables in the original problem
    1269 *
    1270 * @note This function does not count binary variables which are implied integral.
    1271 *
    1272 * @pre This method can be called if @p scip is in one of the following stages:
    1273 * - \ref SCIP_STAGE_PROBLEM
    1274 * - \ref SCIP_STAGE_TRANSFORMING
    1275 * - \ref SCIP_STAGE_TRANSFORMED
    1276 * - \ref SCIP_STAGE_INITPRESOLVE
    1277 * - \ref SCIP_STAGE_PRESOLVING
    1278 * - \ref SCIP_STAGE_EXITPRESOLVE
    1279 * - \ref SCIP_STAGE_PRESOLVED
    1280 * - \ref SCIP_STAGE_INITSOLVE
    1281 * - \ref SCIP_STAGE_SOLVING
    1282 * - \ref SCIP_STAGE_SOLVED
    1283 * - \ref SCIP_STAGE_EXITSOLVE
    1284 * - \ref SCIP_STAGE_FREETRANS
    1285 */
    1286SCIP_EXPORT
    1288 SCIP* scip /**< SCIP data structure */
    1289 );
    1290
    1291/** gets the number of integer variables in the original problem
    1292 *
    1293 * @return the number of integer variables in the original problem
    1294 *
    1295 * @note This function does not count integer variables which are implied integral.
    1296 *
    1297 * @pre This method can be called if @p scip is in one of the following stages:
    1298 * - \ref SCIP_STAGE_PROBLEM
    1299 * - \ref SCIP_STAGE_TRANSFORMING
    1300 * - \ref SCIP_STAGE_TRANSFORMED
    1301 * - \ref SCIP_STAGE_INITPRESOLVE
    1302 * - \ref SCIP_STAGE_PRESOLVING
    1303 * - \ref SCIP_STAGE_EXITPRESOLVE
    1304 * - \ref SCIP_STAGE_PRESOLVED
    1305 * - \ref SCIP_STAGE_INITSOLVE
    1306 * - \ref SCIP_STAGE_SOLVING
    1307 * - \ref SCIP_STAGE_SOLVED
    1308 * - \ref SCIP_STAGE_EXITSOLVE
    1309 * - \ref SCIP_STAGE_FREETRANS
    1310 */
    1311SCIP_EXPORT
    1313 SCIP* scip /**< SCIP data structure */
    1314 );
    1315
    1316/** gets number of implied integral variables in the original problem
    1317 *
    1318 * @return the number of implied integral variables in the original problem
    1319 *
    1320 * @note This function counts binary, integer, and continuous variables which are implied integral.
    1321 *
    1322 * @pre This method can be called if @p scip is in one of the following stages:
    1323 * - \ref SCIP_STAGE_PROBLEM
    1324 * - \ref SCIP_STAGE_TRANSFORMING
    1325 * - \ref SCIP_STAGE_TRANSFORMED
    1326 * - \ref SCIP_STAGE_INITPRESOLVE
    1327 * - \ref SCIP_STAGE_PRESOLVING
    1328 * - \ref SCIP_STAGE_EXITPRESOLVE
    1329 * - \ref SCIP_STAGE_PRESOLVED
    1330 * - \ref SCIP_STAGE_INITSOLVE
    1331 * - \ref SCIP_STAGE_SOLVING
    1332 * - \ref SCIP_STAGE_SOLVED
    1333 * - \ref SCIP_STAGE_EXITSOLVE
    1334 * - \ref SCIP_STAGE_FREETRANS
    1335 */
    1336SCIP_EXPORT
    1338 SCIP* scip /**< SCIP data structure */
    1339 );
    1340
    1341/** gets number of binary implied integral variables in the original problem
    1342 *
    1343 * @return the number of binary implied integral variables in the original problem
    1344 *
    1345 * @pre This method can be called if @p scip is in one of the following stages:
    1346 * - \ref SCIP_STAGE_PROBLEM
    1347 * - \ref SCIP_STAGE_TRANSFORMING
    1348 * - \ref SCIP_STAGE_TRANSFORMED
    1349 * - \ref SCIP_STAGE_INITPRESOLVE
    1350 * - \ref SCIP_STAGE_PRESOLVING
    1351 * - \ref SCIP_STAGE_EXITPRESOLVE
    1352 * - \ref SCIP_STAGE_PRESOLVED
    1353 * - \ref SCIP_STAGE_INITSOLVE
    1354 * - \ref SCIP_STAGE_SOLVING
    1355 * - \ref SCIP_STAGE_SOLVED
    1356 * - \ref SCIP_STAGE_EXITSOLVE
    1357 * - \ref SCIP_STAGE_FREETRANS
    1358 */
    1359SCIP_EXPORT
    1361 SCIP* scip /**< SCIP data structure */
    1362 );
    1363
    1364/** gets number of integer implied integral variables in the original problem
    1365 *
    1366 * @return the number of integer implied integral variables in the original problem
    1367 *
    1368 * @pre This method can be called if @p scip is in one of the following stages:
    1369 * - \ref SCIP_STAGE_PROBLEM
    1370 * - \ref SCIP_STAGE_TRANSFORMING
    1371 * - \ref SCIP_STAGE_TRANSFORMED
    1372 * - \ref SCIP_STAGE_INITPRESOLVE
    1373 * - \ref SCIP_STAGE_PRESOLVING
    1374 * - \ref SCIP_STAGE_EXITPRESOLVE
    1375 * - \ref SCIP_STAGE_PRESOLVED
    1376 * - \ref SCIP_STAGE_INITSOLVE
    1377 * - \ref SCIP_STAGE_SOLVING
    1378 * - \ref SCIP_STAGE_SOLVED
    1379 * - \ref SCIP_STAGE_EXITSOLVE
    1380 * - \ref SCIP_STAGE_FREETRANS
    1381 */
    1382SCIP_EXPORT
    1384 SCIP* scip /**< SCIP data structure */
    1385 );
    1386
    1387/** gets number of continuous implied integral variables in the original problem
    1388 *
    1389 * @return the number of continuous implied integral variables in the original problem
    1390 *
    1391 * @pre This method can be called if @p scip is in one of the following stages:
    1392 * - \ref SCIP_STAGE_PROBLEM
    1393 * - \ref SCIP_STAGE_TRANSFORMING
    1394 * - \ref SCIP_STAGE_TRANSFORMED
    1395 * - \ref SCIP_STAGE_INITPRESOLVE
    1396 * - \ref SCIP_STAGE_PRESOLVING
    1397 * - \ref SCIP_STAGE_EXITPRESOLVE
    1398 * - \ref SCIP_STAGE_PRESOLVED
    1399 * - \ref SCIP_STAGE_INITSOLVE
    1400 * - \ref SCIP_STAGE_SOLVING
    1401 * - \ref SCIP_STAGE_SOLVED
    1402 * - \ref SCIP_STAGE_EXITSOLVE
    1403 * - \ref SCIP_STAGE_FREETRANS
    1404 */
    1405SCIP_EXPORT
    1407 SCIP* scip /**< SCIP data structure */
    1408 );
    1409
    1410/** gets number of continuous variables in the original problem
    1411 *
    1412 * @return the number of continuous variables in the original problem
    1413 *
    1414 * @note This function does not count continuous variables which are implied integral.
    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_TRANSFORMED
    1420 * - \ref SCIP_STAGE_INITPRESOLVE
    1421 * - \ref SCIP_STAGE_PRESOLVING
    1422 * - \ref SCIP_STAGE_EXITPRESOLVE
    1423 * - \ref SCIP_STAGE_PRESOLVED
    1424 * - \ref SCIP_STAGE_INITSOLVE
    1425 * - \ref SCIP_STAGE_SOLVING
    1426 * - \ref SCIP_STAGE_SOLVED
    1427 * - \ref SCIP_STAGE_EXITSOLVE
    1428 * - \ref SCIP_STAGE_FREETRANS
    1429 */
    1430SCIP_EXPORT
    1432 SCIP* scip /**< SCIP data structure */
    1433 );
    1434
    1435/** gets number of all problem variables created during creation and solving of problem;
    1436 * this includes also variables that were deleted in the meantime
    1437 *
    1438 * @return the number of all problem variables created during creation and solving of problem;
    1439 * this includes also variables that were deleted in the meantime
    1440 *
    1441 * @pre This method can be called if @p scip is in one of the following stages:
    1442 * - \ref SCIP_STAGE_PROBLEM
    1443 * - \ref SCIP_STAGE_TRANSFORMING
    1444 * - \ref SCIP_STAGE_TRANSFORMED
    1445 * - \ref SCIP_STAGE_INITPRESOLVE
    1446 * - \ref SCIP_STAGE_PRESOLVING
    1447 * - \ref SCIP_STAGE_EXITPRESOLVE
    1448 * - \ref SCIP_STAGE_PRESOLVED
    1449 * - \ref SCIP_STAGE_INITSOLVE
    1450 * - \ref SCIP_STAGE_SOLVING
    1451 * - \ref SCIP_STAGE_SOLVED
    1452 * - \ref SCIP_STAGE_EXITSOLVE
    1453 * - \ref SCIP_STAGE_FREETRANS
    1454 */
    1455SCIP_EXPORT
    1457 SCIP* scip /**< SCIP data structure */
    1458 );
    1459
    1460/** gets variables of the original or transformed problem along with the numbers of different variable types;
    1461 * the returned problem space (original or transformed) corresponds to the given solution;
    1462 * data may become invalid after calls to SCIPchgVarType(), SCIPfixVar(), SCIPaggregateVars(), and
    1463 * SCIPmultiaggregateVar()
    1464 *
    1465 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1466 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1467 *
    1468 * @pre This method can be called if @p scip is in one of the following stages:
    1469 * - \ref SCIP_STAGE_PROBLEM
    1470 * - \ref SCIP_STAGE_TRANSFORMED
    1471 * - \ref SCIP_STAGE_INITPRESOLVE
    1472 * - \ref SCIP_STAGE_PRESOLVING
    1473 * - \ref SCIP_STAGE_EXITPRESOLVE
    1474 * - \ref SCIP_STAGE_PRESOLVED
    1475 * - \ref SCIP_STAGE_INITSOLVE
    1476 * - \ref SCIP_STAGE_SOLVING
    1477 * - \ref SCIP_STAGE_SOLVED
    1478 */
    1479SCIP_EXPORT
    1481 SCIP* scip, /**< SCIP data structure */
    1482 SCIP_SOL* sol, /**< primal solution that selects the problem space, NULL for current solution */
    1483 SCIP_VAR*** vars, /**< pointer to store variables array or NULL if not needed */
    1484 int* nvars, /**< pointer to store number of variables or NULL if not needed */
    1485 int* nbinvars, /**< pointer to store number of binary variables or NULL if not needed */
    1486 int* nintvars, /**< pointer to store number of integer variables or NULL if not needed */
    1487 int* nbinimplvars, /**< pointer to store number of binary implied integral vars or NULL if not needed */
    1488 int* nintimplvars, /**< pointer to store number of integer implied integral vars or NULL if not needed */
    1489 int* ncontimplvars, /**< pointer to store number of continuous implied integral vars or NULL if not needed */
    1490 int* ncontvars /**< pointer to store number of continuous variables or NULL if not needed */
    1491 );
    1492
    1493/** returns variable of given name in the problem, or NULL if not existing
    1494 *
    1495 * @return variable of given name in the problem, or NULL if not existing
    1496 *
    1497 * @pre This method can be called if @p scip is in one of the following stages:
    1498 * - \ref SCIP_STAGE_PROBLEM
    1499 * - \ref SCIP_STAGE_TRANSFORMING
    1500 * - \ref SCIP_STAGE_TRANSFORMED
    1501 * - \ref SCIP_STAGE_INITPRESOLVE
    1502 * - \ref SCIP_STAGE_PRESOLVING
    1503 * - \ref SCIP_STAGE_EXITPRESOLVE
    1504 * - \ref SCIP_STAGE_PRESOLVED
    1505 * - \ref SCIP_STAGE_INITSOLVE
    1506 * - \ref SCIP_STAGE_SOLVING
    1507 * - \ref SCIP_STAGE_SOLVED
    1508 * - \ref SCIP_STAGE_EXITSOLVE
    1509 * - \ref SCIP_STAGE_FREETRANS
    1510 */
    1511SCIP_EXPORT
    1513 SCIP* scip, /**< SCIP data structure */
    1514 const char* name /**< name of variable to find */
    1515 );
    1516
    1517/** returns TRUE iff all potential variables exist in the problem, and FALSE, if there may be additional variables,
    1518 * that will be added in pricing and improve the objective value
    1519 *
    1520 * @return TRUE, if all potential variables exist in the problem; FALSE, otherwise
    1521 *
    1522 * @pre This method can be called if @p scip is in one of the following stages:
    1523 * - \ref SCIP_STAGE_TRANSFORMING
    1524 * - \ref SCIP_STAGE_TRANSFORMED
    1525 * - \ref SCIP_STAGE_INITPRESOLVE
    1526 * - \ref SCIP_STAGE_PRESOLVING
    1527 * - \ref SCIP_STAGE_EXITPRESOLVE
    1528 * - \ref SCIP_STAGE_PRESOLVED
    1529 * - \ref SCIP_STAGE_INITSOLVE
    1530 * - \ref SCIP_STAGE_SOLVING
    1531 * - \ref SCIP_STAGE_SOLVED
    1532 * - \ref SCIP_STAGE_EXITSOLVE
    1533 * - \ref SCIP_STAGE_FREETRANS
    1534 */
    1535SCIP_EXPORT
    1537 SCIP* scip /**< SCIP data structure */
    1538 );
    1539
    1540/** adds constraint to the problem; if constraint is only valid locally, it is added to the local subproblem of the
    1541 * current node (and all of its subnodes); otherwise it is added to the global problem;
    1542 * if a local constraint is added at the root node, it is automatically upgraded into a global constraint
    1543 *
    1544 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1545 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1546 *
    1547 * @pre This method can be called if @p scip is in one of the following stages:
    1548 * - \ref SCIP_STAGE_PROBLEM
    1549 * - \ref SCIP_STAGE_TRANSFORMED
    1550 * - \ref SCIP_STAGE_INITPRESOLVE
    1551 * - \ref SCIP_STAGE_PRESOLVING
    1552 * - \ref SCIP_STAGE_EXITPRESOLVE
    1553 * - \ref SCIP_STAGE_PRESOLVED
    1554 * - \ref SCIP_STAGE_INITSOLVE
    1555 * - \ref SCIP_STAGE_SOLVING
    1556 * - \ref SCIP_STAGE_EXITSOLVE
    1557 */
    1558SCIP_EXPORT
    1560 SCIP* scip, /**< SCIP data structure */
    1561 SCIP_CONS* cons /**< constraint to add */
    1562 );
    1563
    1564/** adds constraint to the problem and upgrades conflict in the conflict store; if oldcons is valid globally, newcons
    1565 * is added to the global problem; otherwise it is added to the local subproblem of the current node
    1566 *
    1567 * @note must only be called once for both constraints
    1568 *
    1569 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1570 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1571 *
    1572 * @pre this method can be called if @p scip is in one of the following stages:
    1573 * - \ref SCIP_STAGE_PROBLEM
    1574 * - \ref SCIP_STAGE_TRANSFORMED
    1575 * - \ref SCIP_STAGE_INITPRESOLVE
    1576 * - \ref SCIP_STAGE_PRESOLVING
    1577 * - \ref SCIP_STAGE_EXITPRESOLVE
    1578 * - \ref SCIP_STAGE_PRESOLVED
    1579 * - \ref SCIP_STAGE_INITSOLVE
    1580 * - \ref SCIP_STAGE_SOLVING
    1581 * - \ref SCIP_STAGE_EXITSOLVE
    1582 *
    1583 * @note this method will release the upgraded constraint
    1584 */
    1585SCIP_EXPORT
    1587 SCIP* scip, /**< SCIP data structure */
    1588 SCIP_CONS* oldcons, /**< underlying constraint to upgrade */
    1589 SCIP_CONS** newcons /**< upgraded constraint to add */
    1590 );
    1591
    1592/** globally removes constraint from all subproblems; removes constraint from the constraint set change data of the
    1593 * node, where it was added, or from the problem, if it was a problem constraint
    1594 *
    1595 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1596 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1597 *
    1598 * @pre This method can be called if @p scip is in one of the following stages:
    1599 * - \ref SCIP_STAGE_PROBLEM
    1600 * - \ref SCIP_STAGE_INITPRESOLVE
    1601 * - \ref SCIP_STAGE_PRESOLVING
    1602 * - \ref SCIP_STAGE_EXITPRESOLVE
    1603 * - \ref SCIP_STAGE_INITSOLVE
    1604 * - \ref SCIP_STAGE_SOLVING
    1605 * - \ref SCIP_STAGE_EXITSOLVE
    1606 */
    1607SCIP_EXPORT
    1609 SCIP* scip, /**< SCIP data structure */
    1610 SCIP_CONS* cons /**< constraint to delete */
    1611 );
    1612
    1613/** returns original constraint of given name in the problem, or NULL if not existing
    1614 *
    1615 * @return original constraint of given name in the problem, or NULL if not existing
    1616 *
    1617 * @pre This method can be called if @p scip is in one of the following stages:
    1618 * - \ref SCIP_STAGE_PROBLEM
    1619 * - \ref SCIP_STAGE_TRANSFORMING
    1620 * - \ref SCIP_STAGE_TRANSFORMED
    1621 * - \ref SCIP_STAGE_INITPRESOLVE
    1622 * - \ref SCIP_STAGE_PRESOLVING
    1623 * - \ref SCIP_STAGE_EXITPRESOLVE
    1624 * - \ref SCIP_STAGE_PRESOLVED
    1625 * - \ref SCIP_STAGE_INITSOLVE
    1626 * - \ref SCIP_STAGE_SOLVING
    1627 * - \ref SCIP_STAGE_SOLVED
    1628 * - \ref SCIP_STAGE_EXITSOLVE
    1629 * - \ref SCIP_STAGE_FREETRANS
    1630 */
    1631SCIP_EXPORT
    1633 SCIP* scip, /**< SCIP data structure */
    1634 const char* name /**< name of constraint to find */
    1635 );
    1636
    1637/** returns constraint of given name in the problem, or NULL if not existing
    1638 *
    1639 * @return constraint of given name in the problem, or NULL if not existing
    1640 *
    1641 * @pre This method can be called if @p scip is in one of the following stages:
    1642 * - \ref SCIP_STAGE_PROBLEM
    1643 * - \ref SCIP_STAGE_TRANSFORMING
    1644 * - \ref SCIP_STAGE_TRANSFORMED
    1645 * - \ref SCIP_STAGE_INITPRESOLVE
    1646 * - \ref SCIP_STAGE_PRESOLVING
    1647 * - \ref SCIP_STAGE_EXITPRESOLVE
    1648 * - \ref SCIP_STAGE_PRESOLVED
    1649 * - \ref SCIP_STAGE_INITSOLVE
    1650 * - \ref SCIP_STAGE_SOLVING
    1651 * - \ref SCIP_STAGE_SOLVED
    1652 * - \ref SCIP_STAGE_EXITSOLVE
    1653 * - \ref SCIP_STAGE_FREETRANS
    1654 */
    1655SCIP_EXPORT
    1657 SCIP* scip, /**< SCIP data structure */
    1658 const char* name /**< name of constraint to find */
    1659 );
    1660
    1661/** gets number of upgraded constraints
    1662 *
    1663 * @return number of upgraded constraints
    1664 *
    1665 * @pre This method can be called if @p scip is in one of the following stages:
    1666 * - \ref SCIP_STAGE_PROBLEM
    1667 * - \ref SCIP_STAGE_TRANSFORMED
    1668 * - \ref SCIP_STAGE_INITPRESOLVE
    1669 * - \ref SCIP_STAGE_PRESOLVING
    1670 * - \ref SCIP_STAGE_PRESOLVED
    1671 * - \ref SCIP_STAGE_EXITPRESOLVE
    1672 * - \ref SCIP_STAGE_SOLVING
    1673 * - \ref SCIP_STAGE_SOLVED
    1674 */
    1675SCIP_EXPORT
    1677 SCIP* scip /**< SCIP data structure */
    1678 );
    1679
    1680/** gets total number of globally valid constraints currently in the problem
    1681 *
    1682 * @return total number of globally valid constraints currently in the problem
    1683 *
    1684 * @pre This method can be called if @p scip is in one of the following stages:
    1685 * - \ref SCIP_STAGE_PROBLEM
    1686 * - \ref SCIP_STAGE_TRANSFORMED
    1687 * - \ref SCIP_STAGE_INITPRESOLVE
    1688 * - \ref SCIP_STAGE_PRESOLVING
    1689 * - \ref SCIP_STAGE_EXITPRESOLVE
    1690 * - \ref SCIP_STAGE_PRESOLVED
    1691 * - \ref SCIP_STAGE_INITSOLVE
    1692 * - \ref SCIP_STAGE_SOLVING
    1693 * - \ref SCIP_STAGE_SOLVED
    1694 */
    1695SCIP_EXPORT
    1696int SCIPgetNConss(
    1697 SCIP* scip /**< SCIP data structure */
    1698 );
    1699
    1700/** gets array of globally valid constraints currently in the problem
    1701 *
    1702 * @return array of globally valid constraints currently in the problem
    1703 *
    1704 * @pre This method can be called if @p scip is in one of the following stages:
    1705 * - \ref SCIP_STAGE_PROBLEM
    1706 * - \ref SCIP_STAGE_TRANSFORMED
    1707 * - \ref SCIP_STAGE_INITPRESOLVE
    1708 * - \ref SCIP_STAGE_PRESOLVING
    1709 * - \ref SCIP_STAGE_EXITPRESOLVE
    1710 * - \ref SCIP_STAGE_PRESOLVED
    1711 * - \ref SCIP_STAGE_INITSOLVE
    1712 * - \ref SCIP_STAGE_SOLVING
    1713 * - \ref SCIP_STAGE_SOLVED
    1714 *
    1715 * @warning If your are using the method SCIPaddCons(), it can happen that the internal constraint array (which is
    1716 * accessed via this method) gets resized. This can invalid the pointer which is returned by this method.
    1717 */
    1718SCIP_EXPORT
    1720 SCIP* scip /**< SCIP data structure */
    1721 );
    1722
    1723/** gets total number of constraints in the original problem
    1724 *
    1725 * @return total number of constraints in the original problem
    1726 *
    1727 * @pre This method can be called if @p scip is in one of the following stages:
    1728 * - \ref SCIP_STAGE_PROBLEM
    1729 * - \ref SCIP_STAGE_TRANSFORMING
    1730 * - \ref SCIP_STAGE_TRANSFORMED
    1731 * - \ref SCIP_STAGE_INITPRESOLVE
    1732 * - \ref SCIP_STAGE_PRESOLVING
    1733 * - \ref SCIP_STAGE_EXITPRESOLVE
    1734 * - \ref SCIP_STAGE_PRESOLVED
    1735 * - \ref SCIP_STAGE_INITSOLVE
    1736 * - \ref SCIP_STAGE_SOLVING
    1737 * - \ref SCIP_STAGE_SOLVED
    1738 * - \ref SCIP_STAGE_EXITSOLVE
    1739 * - \ref SCIP_STAGE_FREETRANS
    1740 */
    1741SCIP_EXPORT
    1743 SCIP* scip /**< SCIP data structure */
    1744 );
    1745
    1746/** gets array of constraints in the original problem
    1747 *
    1748 * @return array of constraints in the original problem
    1749 *
    1750 * @pre This method can be called if @p scip is in one of the following stages:
    1751 * - \ref SCIP_STAGE_PROBLEM
    1752 * - \ref SCIP_STAGE_TRANSFORMING
    1753 * - \ref SCIP_STAGE_TRANSFORMED
    1754 * - \ref SCIP_STAGE_INITPRESOLVE
    1755 * - \ref SCIP_STAGE_PRESOLVING
    1756 * - \ref SCIP_STAGE_EXITPRESOLVE
    1757 * - \ref SCIP_STAGE_PRESOLVED
    1758 * - \ref SCIP_STAGE_INITSOLVE
    1759 * - \ref SCIP_STAGE_SOLVING
    1760 * - \ref SCIP_STAGE_SOLVED
    1761 * - \ref SCIP_STAGE_EXITSOLVE
    1762 * - \ref SCIP_STAGE_FREETRANS
    1763 */
    1764SCIP_EXPORT
    1766 SCIP* scip /**< SCIP data structure */
    1767 );
    1768
    1769/** computes the number of check constraint in the current node (loop over all constraint handler and cumulates the
    1770 * number of check constraints)
    1771 *
    1772 * @return returns the number of check constraints
    1773 *
    1774 * @pre This method can be called if @p scip is in one of the following stages:
    1775 * - \ref SCIP_STAGE_TRANSFORMED
    1776 * - \ref SCIP_STAGE_INITPRESOLVE
    1777 * - \ref SCIP_STAGE_PRESOLVING
    1778 * - \ref SCIP_STAGE_EXITPRESOLVE
    1779 * - \ref SCIP_STAGE_PRESOLVED
    1780 * - \ref SCIP_STAGE_INITSOLVE
    1781 * - \ref SCIP_STAGE_SOLVING
    1782 */
    1783SCIP_EXPORT
    1785 SCIP* scip /**< SCIP data structure */
    1786 );
    1787
    1788/**@} */
    1789
    1790/**@addtogroup LocalSubproblemMethods
    1791 *
    1792 * @{
    1793 */
    1794
    1795/** adds a conflict to a given node or globally to the problem if @p node == NULL.
    1796 *
    1797 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1798 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1799 *
    1800 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1801 * - \ref SCIP_STAGE_INITPRESOLVE
    1802 * - \ref SCIP_STAGE_PRESOLVING
    1803 * - \ref SCIP_STAGE_EXITPRESOLVE
    1804 * - \ref SCIP_STAGE_SOLVING
    1805 *
    1806 * @note this method will release the constraint
    1807 */
    1808SCIP_EXPORT
    1810 SCIP* scip, /**< SCIP data structure */
    1811 SCIP_NODE* node, /**< node to add conflict (or NULL if global) */
    1812 SCIP_CONS** cons, /**< constraint representing the conflict */
    1813 SCIP_NODE* validnode, /**< node at which the constraint is valid (or NULL) */
    1814 SCIP_CONFTYPE conftype, /**< type of the conflict */
    1815 SCIP_Bool iscutoffinvolved /**< is a cutoff bound involved in this conflict */
    1816 );
    1817
    1818/** tries to remove conflicts depending on an old cutoff bound if the improvement of the new incumbent is good enough
    1819 *
    1820 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1821 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1822 *
    1823 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1824 * - \ref SCIP_STAGE_PRESOLVING
    1825 * - \ref SCIP_STAGE_SOLVING
    1826 */
    1827SCIP_EXPORT
    1829 SCIP* scip, /**< SCIP data structure */
    1830 SCIP_EVENT* event /**< event data */
    1831 );
    1832
    1833/** adds constraint to the given node (and all of its subnodes), even if it is a global constraint;
    1834 * It is sometimes desirable to add the constraint to a more local node (i.e., a node of larger depth) even if
    1835 * the constraint is also valid higher in the tree, for example, if one wants to produce a constraint which is
    1836 * only active in a small part of the tree although it is valid in a larger part.
    1837 * In this case, one should pass the more global node where the constraint is valid as "validnode".
    1838 * Note that the same constraint cannot be added twice to the branching tree with different "validnode" parameters.
    1839 * If the constraint is valid at the same node as it is inserted (the usual case), one should pass NULL as "validnode".
    1840 * If the "validnode" is the root node, it is automatically upgraded into a global constraint, but still only added to
    1841 * the given node. If a local constraint is added to the root node, it is added to the global problem instead.
    1842 *
    1843 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1844 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1845 *
    1846 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1847 * - \ref SCIP_STAGE_INITPRESOLVE
    1848 * - \ref SCIP_STAGE_PRESOLVING
    1849 * - \ref SCIP_STAGE_EXITPRESOLVE
    1850 * - \ref SCIP_STAGE_SOLVING
    1851 */
    1852SCIP_EXPORT
    1854 SCIP* scip, /**< SCIP data structure */
    1855 SCIP_NODE* node, /**< node to add constraint to */
    1856 SCIP_CONS* cons, /**< constraint to add */
    1857 SCIP_NODE* validnode /**< node at which the constraint is valid, or NULL */
    1858 );
    1859
    1860/** adds constraint locally to the current node (and all of its subnodes), even if it is a global constraint;
    1861 * It is sometimes desirable to add the constraint to a more local node (i.e., a node of larger depth) even if
    1862 * the constraint is also valid higher in the tree, for example, if one wants to produce a constraint which is
    1863 * only active in a small part of the tree although it is valid in a larger part.
    1864 *
    1865 * If the constraint is valid at the same node as it is inserted (the usual case), one should pass NULL as "validnode".
    1866 * If the "validnode" is the root node, it is automatically upgraded into a global constraint, but still only added to
    1867 * the given node. If a local constraint is added to the root node, it is added to the global problem instead.
    1868 *
    1869 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1870 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1871 *
    1872 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1873 * - \ref SCIP_STAGE_INITPRESOLVE
    1874 * - \ref SCIP_STAGE_PRESOLVING
    1875 * - \ref SCIP_STAGE_EXITPRESOLVE
    1876 * - \ref SCIP_STAGE_SOLVING
    1877 *
    1878 * @note The same constraint cannot be added twice to the branching tree with different "validnode" parameters. This is
    1879 * the case due to internal data structures and performance issues. In such a case you should try to realize your
    1880 * issue using the method SCIPdisableCons() and SCIPenableCons() and control these via the event system of SCIP.
    1881 */
    1882SCIP_EXPORT
    1884 SCIP* scip, /**< SCIP data structure */
    1885 SCIP_CONS* cons, /**< constraint to add */
    1886 SCIP_NODE* validnode /**< node at which the constraint is valid, or NULL */
    1887 );
    1888
    1889/** disables constraint's separation, enforcing, and propagation capabilities at the given node (and all subnodes);
    1890 * if the method is called at the root node, the constraint is globally deleted from the problem;
    1891 * the constraint deletion is being remembered at the given node, s.t. after leaving the node's subtree, the constraint
    1892 * is automatically enabled again, and after entering the node's subtree, it is automatically disabled;
    1893 * this may improve performance because redundant checks on this constraint are avoided, but it consumes memory;
    1894 * alternatively, use SCIPdisableCons()
    1895 *
    1896 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1897 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1898 *
    1899 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1900 * - \ref SCIP_STAGE_INITPRESOLVE
    1901 * - \ref SCIP_STAGE_PRESOLVING
    1902 * - \ref SCIP_STAGE_EXITPRESOLVE
    1903 * - \ref SCIP_STAGE_SOLVING
    1904 */
    1905SCIP_EXPORT
    1907 SCIP* scip, /**< SCIP data structure */
    1908 SCIP_NODE* node, /**< node to disable constraint in */
    1909 SCIP_CONS* cons /**< constraint to locally delete */
    1910 );
    1911
    1912/** disables constraint's separation, enforcing, and propagation capabilities at the current node (and all subnodes);
    1913 * if the method is called during problem modification or at the root node, the constraint is globally deleted from
    1914 * the problem;
    1915 * the constraint deletion is being remembered at the current node, s.t. after leaving the current subtree, the
    1916 * constraint is automatically enabled again, and after reentering the current node's subtree, it is automatically
    1917 * disabled again;
    1918 * this may improve performance because redundant checks on this constraint are avoided, but it consumes memory;
    1919 * alternatively, use SCIPdisableCons()
    1920 *
    1921 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1922 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1923 *
    1924 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1925 * - \ref SCIP_STAGE_PROBLEM
    1926 * - \ref SCIP_STAGE_INITPRESOLVE
    1927 * - \ref SCIP_STAGE_PRESOLVING
    1928 * - \ref SCIP_STAGE_EXITPRESOLVE
    1929 * - \ref SCIP_STAGE_SOLVING
    1930 *
    1931 * @note SCIP stage does not get changed
    1932 *
    1933 */
    1934SCIP_EXPORT
    1936 SCIP* scip, /**< SCIP data structure */
    1937 SCIP_CONS* cons /**< constraint to locally delete */
    1938 );
    1939
    1940/** gets estimate of best primal solution w.r.t. original problem contained in current subtree
    1941 *
    1942 * @return estimate of best primal solution w.r.t. original problem contained in current subtree
    1943 *
    1944 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1945 * - \ref SCIP_STAGE_SOLVING
    1946 */
    1947SCIP_EXPORT
    1949 SCIP* scip /**< SCIP data structure */
    1950 );
    1951
    1952/** gets estimate of best primal solution w.r.t. transformed problem contained in current subtree
    1953 *
    1954 * @return estimate of best primal solution w.r.t. transformed problem contained in current subtree
    1955 *
    1956 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1957 * - \ref SCIP_STAGE_SOLVING
    1958 */
    1959SCIP_EXPORT
    1961 SCIP* scip /**< SCIP data structure */
    1962 );
    1963
    1964/** gets dual bound of current node
    1965 *
    1966 * @return dual bound of current node
    1967 *
    1968 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1969 * - \ref SCIP_STAGE_SOLVING
    1970 */
    1971SCIP_EXPORT
    1973 SCIP* scip /**< SCIP data structure */
    1974 );
    1975
    1976/** gets lower bound of current node in transformed problem
    1977 *
    1978 * @return lower bound of current node in transformed problem
    1979 *
    1980 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1981 * - \ref SCIP_STAGE_SOLVING
    1982 */
    1983SCIP_EXPORT
    1985 SCIP* scip /**< SCIP data structure */
    1986 );
    1987
    1988/** gets dual bound of given node
    1989 *
    1990 * @return dual bound of a given node
    1991 *
    1992 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1993 * - \ref SCIP_STAGE_SOLVING
    1994 */
    1995SCIP_EXPORT
    1997 SCIP* scip, /**< SCIP data structure */
    1998 SCIP_NODE* node /**< node to get dual bound for */
    1999 );
    2000
    2001/** gets lower bound of given node in transformed problem
    2002 *
    2003 * @return lower bound of given node in transformed problem
    2004 *
    2005 * @pre this method can be called in one of the following stages of the SCIP solving process:
    2006 * - \ref SCIP_STAGE_SOLVING
    2007 */
    2008SCIP_EXPORT
    2010 SCIP* scip, /**< SCIP data structure */
    2011 SCIP_NODE* node /**< node to get dual bound for */
    2012 );
    2013
    2014/** if given value is tighter (larger for minimization, smaller for maximization) than the current node's dual bound (in
    2015 * original problem space), sets the current node's dual bound to the new value
    2016 *
    2017 * @note the given new bound has to be a dual bound, i.e., it has to be valid for the original problem.
    2018 *
    2019 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2020 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2021 *
    2022 * @pre this method can be called in one of the following stages of the SCIP solving process:
    2023 * - \ref SCIP_STAGE_PROBLEM
    2024 * - \ref SCIP_STAGE_PRESOLVING
    2025 * - \ref SCIP_STAGE_PRESOLVED
    2026 * - \ref SCIP_STAGE_SOLVING
    2027 */
    2028SCIP_EXPORT
    2030 SCIP* scip, /**< SCIP data structure */
    2031 SCIP_Real newbound /**< new dual bound for the node (if it's tighter than the old one) */
    2032 );
    2033
    2034/** if given value is larger than the current node's lower bound (in transformed problem), sets the current node's
    2035 * lower bound to the new value
    2036 *
    2037 * @note the given new bound has to be a lower bound, i.e., it has to be valid for the transformed problem.
    2038 *
    2039 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2040 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2041 *
    2042 * @pre this method can be called in one of the following stages of the SCIP solving process:
    2043 * - \ref SCIP_STAGE_PRESOLVING
    2044 * - \ref SCIP_STAGE_PRESOLVED
    2045 * - \ref SCIP_STAGE_SOLVING
    2046 */
    2047SCIP_EXPORT
    2049 SCIP* scip, /**< SCIP data structure */
    2050 SCIP_Real newbound /**< new lower bound for the node (if it's larger than the old one) */
    2051 );
    2052
    2053/** if given value is tighter (higher for minimization, lower for maximization) than the node's dual bound, sets the
    2054 * node's dual bound to the new value.
    2055 *
    2056 * @note must not be used on a leaf because the node priority queue remains untouched
    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 in one of the following stages of the SCIP solving process:
    2062 * - \ref SCIP_STAGE_SOLVING
    2063 */
    2064SCIP_EXPORT
    2066 SCIP* scip, /**< SCIP data structure */
    2067 SCIP_NODE* node, /**< node to update dual bound for */
    2068 SCIP_Real newbound /**< new dual bound for the node (if it's tighter than the old one) */
    2069 );
    2070
    2071/** if given value is higher than the node's lower bound (in transformed problem), sets the node's lower bound to the
    2072 * new value.
    2073 *
    2074 * @note must not be used on a leaf because the node priority queue remains untouched
    2075 *
    2076 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2077 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2078 *
    2079 * @pre this method can be called in one of the following stages of the SCIP solving process:
    2080 * - \ref SCIP_STAGE_SOLVING
    2081 */
    2082SCIP_EXPORT
    2084 SCIP* scip, /**< SCIP data structure */
    2085 SCIP_NODE* node, /**< node to update lower bound for */
    2086 SCIP_Real newbound /**< new lower bound for the node (if it's larger than the old one) */
    2087 );
    2088
    2089/** change the node selection priority of the given child
    2090 *
    2091 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    2092 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    2093 *
    2094 * @pre this method can be called in one of the following stages of the SCIP solving process:
    2095 * - \ref SCIP_STAGE_SOLVING
    2096 */
    2097SCIP_EXPORT
    2099 SCIP* scip, /**< SCIP data structure */
    2100 SCIP_NODE* child, /**< child to update the node selection priority */
    2101 SCIP_Real priority /**< node selection priority value */
    2102 );
    2103
    2104/**@} */
    2105
    2106#ifdef __cplusplus
    2107}
    2108#endif
    2109
    2110#endif
    common defines and data types used in all packages of SCIP
    #define SCIP_Bool
    Definition: def.h:91
    #define SCIP_Real
    Definition: def.h:156
    int SCIPgetNObjVars(SCIP *scip)
    Definition: scip_prob.c:2616
    SCIP_RETCODE SCIPaddVar(SCIP *scip, SCIP_VAR *var)
    Definition: scip_prob.c:1907
    int SCIPgetNIntVars(SCIP *scip)
    Definition: scip_prob.c:2340
    SCIP_RETCODE SCIPpermuteProb(SCIP *scip, unsigned int randseed, SCIP_Bool permuteconss, SCIP_Bool permutebinvars, SCIP_Bool permuteintvars, SCIP_Bool permutebinimplvars, SCIP_Bool permuteintimplvars, SCIP_Bool permutecontimplvars, SCIP_Bool permutecontvars)
    Definition: scip_prob.c:922
    SCIP_RETCODE SCIPaddConsUpgrade(SCIP *scip, SCIP_CONS *oldcons, SCIP_CONS **newcons)
    Definition: scip_prob.c:3368
    SCIP_RETCODE SCIPsetObjIntegral(SCIP *scip)
    Definition: scip_prob.c:1758
    SCIP_RETCODE SCIPgetOrigVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
    Definition: scip_prob.c:2753
    int SCIPgetNImplVars(SCIP *scip)
    Definition: scip_prob.c:2387
    const char * SCIPgetProbName(SCIP *scip)
    Definition: scip_prob.c:1242
    int SCIPgetNContVars(SCIP *scip)
    Definition: scip_prob.c:2569
    int SCIPgetNCheckConss(SCIP *scip)
    Definition: scip_prob.c:3762
    SCIP_RETCODE SCIPaddPricedVar(SCIP *scip, SCIP_VAR *var, SCIP_Real score)
    Definition: scip_prob.c:1984
    SCIP_Real SCIPgetOrigObjscale(SCIP *scip)
    Definition: scip_prob.c:1583
    SCIP_RETCODE SCIPgetSolVarsData(SCIP *scip, SCIP_SOL *sol, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nbinimplvars, int *nintimplvars, int *ncontimplvars, int *ncontvars)
    Definition: scip_prob.c:3114
    SCIP_RETCODE SCIPwriteOrigProblem(SCIP *scip, const char *filename, const char *extension, SCIP_Bool genericnames)
    Definition: scip_prob.c:742
    SCIP_RETCODE SCIPsetProbName(SCIP *scip, const char *name)
    Definition: scip_prob.c:1270
    SCIP_RETCODE SCIPsetObjlimit(SCIP *scip, SCIP_Real objlimit)
    Definition: scip_prob.c:1661
    SCIP_RETCODE SCIPsetProbDeltrans(SCIP *scip, SCIP_DECL_PROBDELTRANS((*probdeltrans)))
    Definition: scip_prob.c:244
    SCIP_Real SCIPgetTransObjoffset(SCIP *scip)
    Definition: scip_prob.c:1606
    int SCIPgetNBinImplVars(SCIP *scip)
    Definition: scip_prob.c:2432
    int SCIPgetNOrigBinVars(SCIP *scip)
    Definition: scip_prob.c:2867
    SCIP_RETCODE SCIPgetVarsData(SCIP *scip, SCIP_VAR ***vars, int *nvars, int *nbinvars, int *nintvars, int *nimplvars, int *ncontvars)
    Definition: scip_prob.c:2115
    int SCIPgetNOrigConss(SCIP *scip)
    Definition: scip_prob.c:3712
    SCIP_Real SCIPgetOrigObjoffset(SCIP *scip)
    Definition: scip_prob.c:1529
    int SCIPgetNOrigContImplVars(SCIP *scip)
    Definition: scip_prob.c:3006
    SCIP_VAR ** SCIPgetOrigVars(SCIP *scip)
    Definition: scip_prob.c:2811
    int SCIPgetNOrigContVars(SCIP *scip)
    Definition: scip_prob.c:3035
    SCIP_RETCODE SCIPsetProbExitsol(SCIP *scip, SCIP_DECL_PROBEXITSOL((*probexitsol)))
    Definition: scip_prob.c:287
    int SCIPgetNOrigIntVars(SCIP *scip)
    Definition: scip_prob.c:2896
    SCIP_CONS ** SCIPgetConss(SCIP *scip)
    Definition: scip_prob.c:3666
    SCIP_RETCODE SCIPsetProbTrans(SCIP *scip, SCIP_DECL_PROBTRANS((*probtrans)))
    Definition: scip_prob.c:223
    SCIP_RETCODE SCIPsetProbDelorig(SCIP *scip, SCIP_DECL_PROBDELORIG((*probdelorig)))
    Definition: scip_prob.c:202
    int SCIPgetNOrigImplVars(SCIP *scip)
    Definition: scip_prob.c:2925
    SCIP_Real SCIPgetObjlimit(SCIP *scip)
    Definition: scip_prob.c:1731
    SCIP_RETCODE SCIPaddObjoffset(SCIP *scip, SCIP_Real addval)
    Definition: scip_prob.c:1443
    int SCIPgetNUpgrConss(SCIP *scip)
    Definition: scip_prob.c:3578
    int SCIPgetNVars(SCIP *scip)
    Definition: scip_prob.c:2246
    SCIP_RETCODE SCIPaddCons(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_prob.c:3274
    SCIP_RETCODE SCIPchgReoptObjective(SCIP *scip, SCIP_OBJSENSE objsense, SCIP_VAR **vars, SCIP_Real *coefs, int nvars)
    Definition: scip_prob.c:1294
    SCIP_CONS * SCIPfindOrigCons(SCIP *scip, const char *name)
    Definition: scip_prob.c:3476
    SCIP_RETCODE SCIPdelCons(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_prob.c:3420
    int SCIPgetNConss(SCIP *scip)
    Definition: scip_prob.c:3620
    SCIP_RETCODE SCIPfreeProb(SCIP *scip)
    Definition: scip_prob.c:835
    SCIP_PROBDATA * SCIPgetProbData(SCIP *scip)
    Definition: scip_prob.c:1139
    SCIP_VAR ** SCIPgetVars(SCIP *scip)
    Definition: scip_prob.c:2201
    SCIP_Real SCIPgetObjNorm(SCIP *scip)
    Definition: scip_prob.c:1880
    SCIP_Bool SCIPallVarsInProb(SCIP *scip)
    Definition: scip_prob.c:3247
    int SCIPgetNOrigVars(SCIP *scip)
    Definition: scip_prob.c:2838
    SCIP_RETCODE SCIPprintTransProblem(SCIP *scip, FILE *file, const char *extension, SCIP_Bool genericnames)
    Definition: scip_prob.c:696
    SCIP_RETCODE SCIPprintOrigProblem(SCIP *scip, FILE *file, const char *extension, SCIP_Bool genericnames)
    Definition: scip_prob.c:652
    int SCIPgetNOrigBinImplVars(SCIP *scip)
    Definition: scip_prob.c:2952
    SCIP_RETCODE SCIPsetProbInitsol(SCIP *scip, SCIP_DECL_PROBINITSOL((*probinitsol)))
    Definition: scip_prob.c:265
    int SCIPgetNOrigIntImplVars(SCIP *scip)
    Definition: scip_prob.c:2979
    int SCIPgetNIntImplVars(SCIP *scip)
    Definition: scip_prob.c:2477
    int SCIPgetNContImplVars(SCIP *scip)
    Definition: scip_prob.c:2522
    SCIP_RETCODE SCIPdelVar(SCIP *scip, SCIP_VAR *var, SCIP_Bool *deleted)
    Definition: scip_prob.c:2041
    SCIP_RETCODE SCIPsetObjsense(SCIP *scip, SCIP_OBJSENSE objsense)
    Definition: scip_prob.c:1417
    SCIP_RETCODE SCIPaddOrigObjoffset(SCIP *scip, SCIP_Real addval)
    Definition: scip_prob.c:1486
    SCIP_RETCODE SCIPcreateProbBasic(SCIP *scip, const char *name)
    Definition: scip_prob.c:182
    SCIP_CONS ** SCIPgetOrigConss(SCIP *scip)
    Definition: scip_prob.c:3739
    SCIP_OBJSENSE SCIPgetObjsense(SCIP *scip)
    Definition: scip_prob.c:1400
    SCIP_RETCODE SCIPwriteTransProblem(SCIP *scip, const char *filename, const char *extension, SCIP_Bool genericnames)
    Definition: scip_prob.c:789
    int SCIPgetNFixedVars(SCIP *scip)
    Definition: scip_prob.c:2705
    SCIP_RETCODE SCIPcreateProb(SCIP *scip, const char *name, SCIP_DECL_PROBDELORIG((*probdelorig)), SCIP_DECL_PROBTRANS((*probtrans)), SCIP_DECL_PROBDELTRANS((*probdeltrans)), SCIP_DECL_PROBINITSOL((*probinitsol)), SCIP_DECL_PROBEXITSOL((*probexitsol)), SCIP_DECL_PROBCOPY((*probcopy)), SCIP_PROBDATA *probdata)
    Definition: scip_prob.c:119
    SCIP_RETCODE SCIPsetProbData(SCIP *scip, SCIP_PROBDATA *probdata)
    Definition: scip_prob.c:1189
    SCIP_RATIONAL * SCIPgetOrigObjoffsetExact(SCIP *scip)
    Definition: scip_prob.c:1556
    int SCIPgetNBinVars(SCIP *scip)
    Definition: scip_prob.c:2293
    SCIP_VAR ** SCIPgetFixedVars(SCIP *scip)
    Definition: scip_prob.c:2662
    int SCIPgetNTotalVars(SCIP *scip)
    Definition: scip_prob.c:3064
    SCIP_Real SCIPgetTransObjscale(SCIP *scip)
    Definition: scip_prob.c:1629
    SCIP_RETCODE SCIPsetProbCopy(SCIP *scip, SCIP_DECL_PROBCOPY((*probcopy)))
    Definition: scip_prob.c:308
    SCIP_Bool SCIPisObjIntegral(SCIP *scip)
    Definition: scip_prob.c:1801
    SCIP_VAR * SCIPfindVar(SCIP *scip, const char *name)
    Definition: scip_prob.c:3189
    SCIP_CONS * SCIPfindCons(SCIP *scip, const char *name)
    Definition: scip_prob.c:3525
    SCIP_RETCODE SCIPaddOrigObjoffsetExact(SCIP *scip, SCIP_RATIONAL *addval)
    Definition: scip_prob.c:1465
    SCIP_RETCODE SCIPreadProb(SCIP *scip, const char *filename, const char *extension)
    Definition: scip_prob.c:341
    SCIP_RETCODE SCIPupdateNodeLowerbound(SCIP *scip, SCIP_NODE *node, SCIP_Real newbound)
    Definition: scip_prob.c:4354
    SCIP_RETCODE SCIPupdateLocalLowerbound(SCIP *scip, SCIP_Real newbound)
    Definition: scip_prob.c:4289
    SCIP_Real SCIPgetNodeDualbound(SCIP *scip, SCIP_NODE *node)
    Definition: scip_prob.c:4198
    SCIP_RETCODE SCIPdelConsNode(SCIP *scip, SCIP_NODE *node, SCIP_CONS *cons)
    Definition: scip_prob.c:4017
    SCIP_Real SCIPgetLocalOrigEstimate(SCIP *scip)
    Definition: scip_prob.c:4120
    SCIP_RETCODE SCIPdelConsLocal(SCIP *scip, SCIP_CONS *cons)
    Definition: scip_prob.c:4067
    SCIP_RETCODE SCIPaddConsNode(SCIP *scip, SCIP_NODE *node, SCIP_CONS *cons, SCIP_NODE *validnode)
    Definition: scip_prob.c:3901
    SCIP_RETCODE SCIPclearConflictStore(SCIP *scip, SCIP_EVENT *event)
    Definition: scip_prob.c:3864
    SCIP_Real SCIPgetLocalLowerbound(SCIP *scip)
    Definition: scip_prob.c:4178
    SCIP_RETCODE SCIPupdateLocalDualbound(SCIP *scip, SCIP_Real newbound)
    Definition: scip_prob.c:4239
    SCIP_RETCODE SCIPaddConflict(SCIP *scip, SCIP_NODE *node, SCIP_CONS **cons, SCIP_NODE *validnode, SCIP_CONFTYPE conftype, SCIP_Bool iscutoffinvolved)
    Definition: scip_prob.c:3806
    SCIP_RETCODE SCIPchgChildPrio(SCIP *scip, SCIP_NODE *child, SCIP_Real priority)
    Definition: scip_prob.c:4388
    SCIP_RETCODE SCIPupdateNodeDualbound(SCIP *scip, SCIP_NODE *node, SCIP_Real newbound)
    Definition: scip_prob.c:4330
    SCIP_Real SCIPgetLocalDualbound(SCIP *scip)
    Definition: scip_prob.c:4159
    SCIP_RETCODE SCIPaddConsLocal(SCIP *scip, SCIP_CONS *cons, SCIP_NODE *validnode)
    Definition: scip_prob.c:3986
    SCIP_Real SCIPgetNodeLowerbound(SCIP *scip, SCIP_NODE *node)
    Definition: scip_prob.c:4215
    SCIP_Real SCIPgetLocalTransEstimate(SCIP *scip)
    Definition: scip_prob.c:4139
    type definitions for conflict analysis
    enum SCIP_ConflictType SCIP_CONFTYPE
    Definition: type_conflict.h:68
    type definitions for constraints and constraint handlers
    type definitions for managing events
    type definitions for miscellaneous datastructures
    type definitions for storing and manipulating the main problem
    #define SCIP_DECL_PROBCOPY(x)
    Definition: type_prob.h:150
    #define SCIP_DECL_PROBDELTRANS(x)
    Definition: type_prob.h:95
    #define SCIP_DECL_PROBEXITSOL(x)
    Definition: type_prob.h:119
    struct SCIP_ProbData SCIP_PROBDATA
    Definition: type_prob.h:53
    #define SCIP_DECL_PROBDELORIG(x)
    Definition: type_prob.h:64
    #define SCIP_DECL_PROBTRANS(x)
    Definition: type_prob.h:83
    #define SCIP_DECL_PROBINITSOL(x)
    Definition: type_prob.h:106
    enum SCIP_Objsense SCIP_OBJSENSE
    Definition: type_prob.h:50
    type definitions for rational numbers
    result codes for SCIP callback methods
    type definitions for return codes for SCIP methods
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63
    type definitions for SCIP's main datastructure
    type definitions for storing primal CIP solutions
    type definitions for branch and bound tree
    type definitions for problem variables