Scippy

    SCIP

    Solving Constraint Integer Programs

    scip_lpexact.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_lpexact.h
    26 * @ingroup PUBLICCOREAPI
    27 * @brief public methods for the LP relaxation, rows and columns
    28 * @author Leon Eifler
    29 */
    30
    31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    32
    33#ifndef __SCIP_SCIP_LPEXACT_H__
    34#define __SCIP_SCIP_LPEXACT_H__
    35
    36
    37#include "lpi/type_lpi.h"
    38#include "scip/def.h"
    39#include "scip/rational.h"
    40#include "scip/type_cons.h"
    41#include "scip/type_lp.h"
    42#include "scip/type_lpexact.h"
    43#include "scip/type_misc.h"
    44#include "scip/type_retcode.h"
    45#include "scip/type_scip.h"
    46#include "scip/type_sepa.h"
    47#include "scip/type_sol.h"
    48#include "scip/type_var.h"
    49
    50#ifdef __cplusplus
    51extern "C" {
    52#endif
    53
    54/**@addtogroup PublicLPExactMethods
    55 *
    56 * @{
    57 */
    58
    59/** creates and captures an LP row without any coefficients from a constraint handler
    60 *
    61 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    62 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    63 *
    64 * @pre this method can be called in one of the following stages of the SCIP solving process:
    65 * - \ref SCIP_STAGE_INITSOLVE
    66 * - \ref SCIP_STAGE_SOLVING
    67 */
    68SCIP_EXPORT
    70 SCIP* scip, /**< SCIP data structure */
    71 SCIP_ROWEXACT** rowexact, /**< pointer to row */
    72 SCIP_ROW* fprow, /**< pointer to fp-row that corresponds to this row */
    73 SCIP_ROW* fprowrhs, /**< rhs-part of fp-relaxation of this row if necessary, NULL otherwise */
    74 SCIP_RATIONAL* lhs, /**< left hand side of row */
    75 SCIP_RATIONAL* rhs, /**< right hand side of row */
    76 SCIP_Bool isfprelaxable /**< is it possible to create an fp relaxation of this row? */
    77 );
    78
    79/** creates and captures an exact LP row
    80 *
    81 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    82 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    83 *
    84 * @pre this method can be called in one of the following stages of the SCIP solving process:
    85 * - \ref SCIP_STAGE_SOLVING
    86 */
    87SCIP_EXPORT
    89 SCIP* scip, /**< SCIP data structure */
    90 SCIP_ROWEXACT** row, /**< pointer to row */
    91 SCIP_ROW* fprow, /**< corresponding fp approximation/relaxation */
    92 int len, /**< number of nonzeros in the row */
    93 SCIP_COLEXACT** cols, /**< array with columns of row entries */
    94 SCIP_RATIONAL** vals, /**< array with coefficients of row entries */
    95 SCIP_RATIONAL* lhs, /**< left hand side of row */
    96 SCIP_RATIONAL* rhs, /**< right hand side of row */
    97 SCIP_Bool isfprelaxable /**< is it possible to make fp-relaxation of this row */
    98 );
    99
    100/** creates and captures an exact LP row from an existing fp row
    101 *
    102 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    103 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    104 *
    105 * @pre this method can be called in one of the following stages of the SCIP solving process:
    106 * - \ref SCIP_STAGE_INITSOLVE
    107 * - \ref SCIP_STAGE_SOLVING
    108 */
    109SCIP_EXPORT
    111 SCIP* scip, /**< SCIP data structure */
    112 SCIP_ROW* fprow /**< corresponding fp approximation/relaxation */
    113 );
    114
    115/** generates two fprows that are a relaxation of the exact row wrt the lhs/rhs, respectively
    116 *
    117 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    118 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    119 *
    120 * @pre this method can be called in one of the following stages of the SCIP solving process:
    121 * - \ref SCIP_STAGE_INITSOLVE
    122 * - \ref SCIP_STAGE_SOLVING
    123 */
    124SCIP_EXPORT
    126 SCIP* scip, /**< SCIP data structure */
    127 SCIP_ROWEXACT* row, /**< SCIP exact row */
    128 SCIP_ROW* rowlhs, /**< fp row-relaxation wrt lhs */
    129 SCIP_ROW* rowrhs, /**< fp row-relaxation wrt rhs */
    130 SCIP_Bool* onerowrelax, /**< is one row enough to represent the exact row */
    131 SCIP_Bool* hasfprelax /**< is it possible to generate relaxations at all for this row? */
    132 );
    133
    134/** increases usage counter of exact LP row
    135 *
    136 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    137 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    138 *
    139 * @pre this method can be called in one of the following stages of the SCIP solving process:
    140 * - \ref SCIP_STAGE_INITSOLVE
    141 * - \ref SCIP_STAGE_SOLVING
    142 */
    143SCIP_EXPORT
    145 SCIP* scip, /**< SCIP data structure */
    146 SCIP_ROWEXACT* row /**< row to capture */
    147 );
    148
    149/** decreases usage counter of LP row, and frees memory if necessary
    150 *
    151 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    152 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    153 *
    154 * @pre this method can be called in one of the following stages of the SCIP solving process:
    155 * - \ref SCIP_STAGE_INITSOLVE
    156 * - \ref SCIP_STAGE_SOLVING
    157 * - \ref SCIP_STAGE_EXITSOLVE
    158 */
    159SCIP_EXPORT
    161 SCIP* scip, /**< SCIP data structure */
    162 SCIP_ROWEXACT** row /**< pointer to LP row */
    163 );
    164
    165/** changes left hand side of exact LP row
    166 *
    167 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    168 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    169 *
    170 * @pre this method can be called in one of the following stages of the SCIP solving process:
    171 * - \ref SCIP_STAGE_INITSOLVE
    172 * - \ref SCIP_STAGE_SOLVING
    173 */
    174SCIP_EXPORT
    176 SCIP* scip, /**< SCIP data structure */
    177 SCIP_ROWEXACT* row, /**< LP row */
    178 SCIP_RATIONAL* lhs /**< new left hand side */
    179 );
    180
    181/** changes right hand side of exact LP row
    182 *
    183 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    184 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    185 *
    186 * @pre this method can be called in one of the following stages of the SCIP solving process:
    187 * - \ref SCIP_STAGE_INITSOLVE
    188 * - \ref SCIP_STAGE_SOLVING
    189 */
    190SCIP_EXPORT
    192 SCIP* scip, /**< SCIP data structure */
    193 SCIP_ROWEXACT* row, /**< LP row */
    194 SCIP_RATIONAL* rhs /**< new right hand side */
    195 );
    196
    197/** resolves variables to columns and adds them with the coefficients to the row;
    198 * this method caches the row extensions and flushes them afterwards to gain better performance
    199 *
    200 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    201 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    202 *
    203 * @attention If a coefficients absolute value is below the SCIP epsilon tolerance, the variable with its value is not added.
    204 *
    205 * @pre this method can be called in one of the following stages of the SCIP solving process:
    206 * - \ref SCIP_STAGE_INITSOLVE
    207 * - \ref SCIP_STAGE_SOLVING
    208 */
    209SCIP_EXPORT
    211 SCIP* scip, /**< SCIP data structure */
    212 SCIP_ROWEXACT* row, /**< LP row */
    213 int nvars, /**< number of variables to add to the row */
    214 SCIP_VAR** vars, /**< problem variables to add */
    215 SCIP_RATIONAL** vals /**< values of coefficients */
    216 );
    217
    218/** returns the activity of a row for the given primal solution with running error analysis
    219 *
    220 * @return the activitiy of a row for the given primal solution and the error bound of the activity; returns true on success
    221 *
    222 * @pre this method can be called in one of the following stages of the SCIP solving process:
    223 * - \ref SCIP_STAGE_SOLVING
    224 */
    225SCIP_EXPORT
    227 SCIP* scip, /**< SCIP data structure */
    228 SCIP_ROWEXACT* row, /**< LP row */
    229 SCIP_SOL* sol, /**< primal CIP solution */
    230 SCIP_Real* activity, /**< the approximate activity */
    231 SCIP_Real* errorbound /**< the error bound */
    232 );
    233
    234/** returns the activity of a row for the given primal solution
    235 *
    236 * @return the activitiy of a row for the given primal solution
    237 *
    238 * @pre this method can be called in one of the following stages of the SCIP solving process:
    239 * - \ref SCIP_STAGE_SOLVING
    240 */
    241SCIP_EXPORT
    243 SCIP* scip, /**< SCIP data structure */
    244 SCIP_ROWEXACT* row, /**< LP row */
    245 SCIP_SOL* sol, /**< primal CIP solution */
    246 SCIP_Bool useexact, /**< true if sol should be considered instead of sol */
    247 SCIP_RATIONAL* result /**< result pointer */
    248 );
    249
    250/** returns the feasibility of a row for the given primal solution
    251 *
    252 * @return the feasibility of a row for the given primal solution
    253 *
    254 * @pre this method can be called in one of the following stages of the SCIP solving process:
    255 * - \ref SCIP_STAGE_SOLVING
    256 */
    257SCIP_EXPORT
    259 SCIP* scip, /**< SCIP data structure */
    260 SCIP_ROWEXACT* row, /**< LP row */
    261 SCIP_SOL* sol, /**< primal CIP solution */
    262 SCIP_RATIONAL* result /**< result pointer */
    263 );
    264
    265/** output exact row to file stream via the message handler system
    266 *
    267 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    268 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    269 *
    270 * @pre this method can be called in one of the following stages of the SCIP solving process:
    271 * - \ref SCIP_STAGE_SOLVING
    272 * - \ref SCIP_STAGE_SOLVED
    273 * - \ref SCIP_STAGE_EXITSOLVE
    274 */
    275SCIP_EXPORT
    277 SCIP* scip, /**< SCIP data structure */
    278 SCIP_ROWEXACT* row, /**< LP row */
    279 FILE* file /**< output file (or NULL for standard output) */
    280 );
    281
    282/** returns whether the exact lp was solved */
    283SCIP_EXPORT
    285 SCIP* scip /**< SCIP data structure */
    286 );
    287
    288/** gets solution status of current exact LP
    289 *
    290 * @return the solution status of current exact LP.
    291 *
    292 * @pre This method can be called if @p scip is in one of the following stages:
    293 * - \ref SCIP_STAGE_SOLVING
    294 *
    295 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    296 */
    297SCIP_EXPORT
    299 SCIP* scip /**< SCIP data structure */
    300 );
    301
    302/** gets objective value of current exact LP (which is the sum of column and loose objective value)
    303 *
    304 * @pre This method can be called if @p scip is in one of the following stages:
    305 * - \ref SCIP_STAGE_SOLVING
    306 *
    307 * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
    308 * if a limit was hit during solving. It must not be used as a dual bound if the exact LP solution status
    309 * returned by SCIPgetLPExactSolstat() is SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
    310 *
    311 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    312 */
    313SCIP_EXPORT
    315 SCIP* scip, /**< SCIP data structure */
    316 SCIP_RATIONAL* result /**< result pointer */
    317 );
    318
    319/** changes variable's lower bound in current exact dive
    320 *
    321 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    322 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    323 *
    324 * @pre This method can be called if @p scip is in one of the following stages:
    325 * - \ref SCIP_STAGE_SOLVING
    326 *
    327 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    328 */
    329SCIP_EXPORT
    331 SCIP* scip, /**< SCIP data structure */
    332 SCIP_VAR* var, /**< variable to change the bound for */
    333 SCIP_RATIONAL* newbound /**< new value for bound */
    334 );
    335
    336/** changes variable's upper bound in current exact dive
    337 *
    338 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    339 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    340 *
    341 * @pre This method can be called if @p scip is in one of the following stages:
    342 * - \ref SCIP_STAGE_SOLVING
    343 *
    344 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    345 */
    346SCIP_EXPORT
    348 SCIP* scip, /**< SCIP data structure */
    349 SCIP_VAR* var, /**< variable to change the bound for */
    350 SCIP_RATIONAL* newbound /**< new value for bound */
    351 );
    352
    353/** solves the exact LP of the current dive; no separation or pricing is applied
    354 *
    355 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    356 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    357 *
    358 * @pre This method can be called if @p scip is in one of the following stages:
    359 * - \ref SCIP_STAGE_SOLVING
    360 *
    361 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    362 */
    363SCIP_EXPORT
    365 SCIP* scip, /**< SCIP data structure */
    366 int itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
    367 SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
    368 SCIP_Bool* cutoff /**< pointer to store whether the diving LP was infeasible or the objective
    369 * limit was reached (or NULL, if not needed) */
    370 );
    371
    372/** initiates exact LP diving, making methods SCIPchgVarObjExactDive(), SCIPchgVarLbExactDive(), and SCIPchgVarUbExactDive() available
    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_SOLVING
    379 *
    380 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    381 *
    382 * @note In parallel to exact LP diving, this method also starts the regular LP diving mode by calling SCIPstartDive().
    383 */
    384SCIP_EXPORT
    386 SCIP* scip /**< SCIP data structure */
    387 );
    388
    389/** checks if exact diving mode is possible at this point in time
    390 *
    391 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    392 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    393 *
    394 * @pre This method can be called if @p scip is in one of the following stages:
    395 * - \ref SCIP_STAGE_SOLVING
    396 *
    397 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    398 *
    399 * @note In parallel to exact LP diving, this method also starts the regular LP diving mode by calling SCIPstartDive().
    400 */
    401SCIP_EXPORT
    403 SCIP* scip /**< SCIP data structure */
    404 );
    405
    406/** returns whether we are in exact diving mode
    407 *
    408 * @return whether we are in exact diving mode.
    409 *
    410 * @pre This method can be called if @p scip is in one of the following stages:
    411 * - \ref SCIP_STAGE_TRANSFORMING
    412 * - \ref SCIP_STAGE_TRANSFORMED
    413 * - \ref SCIP_STAGE_INITPRESOLVE
    414 * - \ref SCIP_STAGE_PRESOLVING
    415 * - \ref SCIP_STAGE_EXITPRESOLVE
    416 * - \ref SCIP_STAGE_PRESOLVED
    417 * - \ref SCIP_STAGE_INITSOLVE
    418 * - \ref SCIP_STAGE_SOLVING
    419 * - \ref SCIP_STAGE_SOLVED
    420 * - \ref SCIP_STAGE_EXITSOLVE
    421 * - \ref SCIP_STAGE_FREETRANS
    422 *
    423 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    424 */
    425SCIP_EXPORT
    427 SCIP* scip /**< SCIP data structure */
    428 );
    429
    430/** quits exact LP diving and resets bounds and objective values of columns to the current node's values
    431 *
    432 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    433 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    434 *
    435 * @pre This method can be called if @p scip is in one of the following stages:
    436 * - \ref SCIP_STAGE_SOLVING
    437 *
    438 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    439 */
    440SCIP_EXPORT
    442 SCIP* scip /**< SCIP data structure */
    443 );
    444
    445/** writes current exact LP to a file
    446 *
    447 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    448 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    449 *
    450 * @pre This method can be called if @p scip is in one of the following stages:
    451 * - \ref SCIP_STAGE_SOLVING
    452 *
    453 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    454 */
    455SCIP_EXPORT
    457 SCIP* scip, /**< SCIP data structure */
    458 const char* filename /**< file name */
    459 );
    460
    461/**@} */
    462
    463#ifdef __cplusplus
    464}
    465#endif
    466
    467#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
    SCIP_RETCODE SCIPreleaseRowExact(SCIP *scip, SCIP_ROWEXACT **row)
    Definition: scip_lpexact.c:110
    SCIP_RETCODE SCIPsolveExactDiveLP(SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff)
    Definition: scip_lpexact.c:653
    SCIP_Bool SCIPisExactDivePossible(SCIP *scip)
    Definition: scip_lpexact.c:551
    SCIP_Bool SCIPgetRowSolActivityWithErrorboundExact(SCIP *scip, SCIP_ROWEXACT *row, SCIP_SOL *sol, SCIP_Real *activity, SCIP_Real *errorbound)
    Definition: scip_lpexact.c:396
    SCIP_RETCODE SCIPprintRowExact(SCIP *scip, SCIP_ROWEXACT *row, FILE *file)
    Definition: scip_lpexact.c:419
    SCIP_RETCODE SCIPgenerateFpRowsFromRowExact(SCIP *scip, SCIP_ROWEXACT *row, SCIP_ROW *rowlhs, SCIP_ROW *rowrhs, SCIP_Bool *onerowrelax, SCIP_Bool *hasfprelax)
    Definition: scip_lpexact.c:309
    SCIP_RETCODE SCIPgetRowSolActivityExact(SCIP *scip, SCIP_ROWEXACT *row, SCIP_SOL *sol, SCIP_Bool useexact, SCIP_RATIONAL *result)
    Definition: scip_lpexact.c:367
    SCIP_RETCODE SCIPchgVarLbExactDive(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
    Definition: scip_lpexact.c:710
    SCIP_RETCODE SCIPgetRowSolFeasibilityExact(SCIP *scip, SCIP_ROWEXACT *row, SCIP_SOL *sol, SCIP_RATIONAL *result)
    Definition: scip_lpexact.c:335
    SCIP_LPSOLSTAT SCIPgetLPExactSolstat(SCIP *scip)
    Definition: scip_lpexact.c:475
    SCIP_RETCODE SCIPcreateRowExact(SCIP *scip, SCIP_ROWEXACT **row, SCIP_ROW *fprow, int len, SCIP_COLEXACT **cols, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool isfprelaxable)
    Definition: scip_lpexact.c:256
    SCIP_RETCODE SCIPchgRowExactLhs(SCIP *scip, SCIP_ROWEXACT *row, SCIP_RATIONAL *lhs)
    Definition: scip_lpexact.c:131
    SCIP_RETCODE SCIPcreateEmptyRowConsExact(SCIP *scip, SCIP_ROWEXACT **rowexact, SCIP_ROW *fprow, SCIP_ROW *fprowrhs, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool isfprelaxable)
    Definition: scip_lpexact.c:228
    SCIP_RETCODE SCIPstartExactDive(SCIP *scip)
    Definition: scip_lpexact.c:502
    SCIP_RETCODE SCIPendExactDive(SCIP *scip)
    Definition: scip_lpexact.c:615
    SCIP_RETCODE SCIPwriteLPexact(SCIP *scip, const char *filename)
    Definition: scip_lpexact.c:774
    SCIP_RETCODE SCIPchgVarUbExactDive(SCIP *scip, SCIP_VAR *var, SCIP_RATIONAL *newbound)
    Definition: scip_lpexact.c:742
    SCIP_RETCODE SCIPchgRowExactRhs(SCIP *scip, SCIP_ROWEXACT *row, SCIP_RATIONAL *rhs)
    Definition: scip_lpexact.c:155
    SCIP_RETCODE SCIPaddVarsToRowExact(SCIP *scip, SCIP_ROWEXACT *row, int nvars, SCIP_VAR **vars, SCIP_RATIONAL **vals)
    Definition: scip_lpexact.c:182
    SCIP_Bool SCIPlpExactIsSolved(SCIP *scip)
    Definition: scip_lpexact.c:456
    SCIP_RETCODE SCIPcaptureRowExact(SCIP *scip, SCIP_ROWEXACT *row)
    Definition: scip_lpexact.c:88
    SCIP_RETCODE SCIPcreateRowExactFromRow(SCIP *scip, SCIP_ROW *fprow)
    Definition: scip_lpexact.c:285
    SCIP_Bool SCIPinExactDive(SCIP *scip)
    Definition: scip_lpexact.c:594
    void SCIPgetLPExactObjval(SCIP *scip, SCIP_RATIONAL *result)
    Definition: scip_lpexact.c:445
    wrapper for rational number arithmetic
    type definitions for constraints and constraint handlers
    type definitions for LP management
    enum SCIP_LPSolStat SCIP_LPSOLSTAT
    Definition: type_lp.h:52
    type definitions for exact LP management
    type definitions for specific LP solvers interface
    type definitions for miscellaneous datastructures
    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 separators
    type definitions for storing primal CIP solutions
    type definitions for problem variables