Scippy

    SCIP

    Solving Constraint Integer Programs

    scip_lp.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_lp.h
    26 * @ingroup PUBLICCOREAPI
    27 * @brief public methods for the LP relaxation, rows and columns
    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_LP_H__
    41#define __SCIP_SCIP_LP_H__
    42
    43
    44#include "lpi/type_lpi.h"
    45#include "scip/def.h"
    46#include "scip/type_cons.h"
    47#include "scip/type_lp.h"
    48#include "scip/type_misc.h"
    49#include "scip/type_retcode.h"
    50#include "scip/type_scip.h"
    51#include "scip/type_sepa.h"
    52#include "scip/type_sol.h"
    53#include "scip/type_var.h"
    54
    55#ifdef __cplusplus
    56extern "C" {
    57#endif
    58
    59/**@addtogroup PublicLPMethods
    60 *
    61 * @{
    62 */
    63
    64/** returns whether the LP was or is to be solved in the current node
    65 *
    66 * @return whether the LP was or is to be solved in the current node.
    67 *
    68 * @pre This method can be called if @p scip is in one of the following stages:
    69 * - \ref SCIP_STAGE_SOLVING
    70 *
    71 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    72 */
    73SCIP_EXPORT
    75 SCIP* scip /**< SCIP data structure */
    76 );
    77
    78/** returns whether the LP of the current node is already constructed
    79 *
    80 * @return whether the LP of the current node is already constructed.
    81 *
    82 * @pre This method can be called if @p scip is in one of the following stages:
    83 * - \ref SCIP_STAGE_SOLVING
    84 *
    85 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    86 */
    87SCIP_EXPORT
    89 SCIP* scip /**< SCIP data structure */
    90 );
    91
    92/** makes sure that the LP of the current node is loaded and may be accessed through the LP information methods
    93 *
    94 * @warning Contructing the LP might change the amount of variables known in the transformed problem and therefore also
    95 * the variables array of SCIP (returned by SCIPgetVars() and SCIPgetVarsData()), so it might be necessary to
    96 * call one of the later method after this one
    97 *
    98 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    99 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    100 *
    101 * @pre This method can be called if @p scip is in one of the following stages:
    102 * - \ref SCIP_STAGE_SOLVING
    103 *
    104 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    105 */
    106SCIP_EXPORT
    108 SCIP* scip, /**< SCIP data structure */
    109 SCIP_Bool* cutoff /**< pointer to store whether the node can be cut off */
    110 );
    111
    112/** makes sure that the LP of the current node is flushed
    113 *
    114 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    115 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    116 *
    117 * @pre This method can be called if @p scip is in one of the following stages:
    118 * - \ref SCIP_STAGE_SOLVING
    119 *
    120 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    121 */
    122SCIP_EXPORT
    124 SCIP* scip /**< SCIP data structure */
    125 );
    126
    127/** gets solution status of current LP
    128 *
    129 * @return the solution status of current LP.
    130 *
    131 * @pre This method can be called if @p scip is in one of the following stages:
    132 * - \ref SCIP_STAGE_SOLVING
    133 *
    134 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    135 */
    136SCIP_EXPORT
    138 SCIP* scip /**< SCIP data structure */
    139 );
    140
    141/** returns whether the current LP solution passed the primal feasibility check
    142 *
    143 * @returns whether the current LP solution passed the primal feasibility check.
    144 *
    145 * @pre This method can be called if @p scip is in one of the following stages:
    146 * - \ref SCIP_STAGE_SOLVING
    147 *
    148 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    149 */
    150SCIP_EXPORT
    152 SCIP* scip /**< SCIP data structure */
    153 );
    154
    155/** returns whether the current LP solution passed the dual feasibility check
    156 *
    157 * @returns whether the current LP solution passed the dual feasibility check.
    158 *
    159 * @pre This method can be called if @p scip is in one of the following stages:
    160 * - \ref SCIP_STAGE_SOLVING
    161 *
    162 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    163 */
    164SCIP_EXPORT
    166 SCIP* scip /**< SCIP data structure */
    167 );
    168
    169/** returns whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound
    170 *
    171 * @return whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound.
    172 *
    173 * @pre This method can be called if @p scip is in one of the following stages:
    174 * - \ref SCIP_STAGE_SOLVING
    175 *
    176 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    177 */
    178SCIP_EXPORT
    180 SCIP* scip /**< SCIP data structure */
    181 );
    182
    183/** gets objective value of current LP (which is the sum of column and loose objective value)
    184 *
    185 * @return the objective value of current LP (which is the sum of column and loose objective value).
    186 *
    187 * @pre This method can be called if @p scip is in one of the following stages:
    188 * - \ref SCIP_STAGE_SOLVING
    189 *
    190 * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
    191 * if a limit was hit during solving. It must not be used as a dual bound if the LP solution status returned by
    192 * SCIPgetLPSolstat() is SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
    193 *
    194 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    195 */
    196SCIP_EXPORT
    198 SCIP* scip /**< SCIP data structure */
    199 );
    200
    201/** gets part of objective value of current LP that results from COLUMN variables only
    202 *
    203 * @return the part of objective value of current LP that results from COLUMN variables only.
    204 *
    205 * @pre This method can be called if @p scip is in one of the following stages:
    206 * - \ref SCIP_STAGE_SOLVING
    207 *
    208 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    209 */
    210SCIP_EXPORT
    212 SCIP* scip /**< SCIP data structure */
    213 );
    214
    215/** gets part of objective value of current LP that results from LOOSE variables only
    216 *
    217 * @return part of objective value of current LP that results from LOOSE variables only.
    218 *
    219 * @pre This method can be called if @p scip is in one of the following stages:
    220 * - \ref SCIP_STAGE_SOLVING
    221 *
    222 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    223 */
    224SCIP_EXPORT
    226 SCIP* scip /**< SCIP data structure */
    227 );
    228
    229/** gets the global pseudo objective value; that is all variables set to their best (w.r.t. the objective
    230 * function) global bound
    231 *
    232 * @return the global pseudo objective value; that is all variables set to their best (w.r.t. the objective
    233 * function) global bound.
    234 *
    235 * @pre This method can be called if @p scip is in one of the following stages:
    236 * - \ref SCIP_STAGE_INITPRESOLVE
    237 * - \ref SCIP_STAGE_PRESOLVING
    238 * - \ref SCIP_STAGE_EXITPRESOLVE
    239 * - \ref SCIP_STAGE_PRESOLVED
    240 * - \ref SCIP_STAGE_INITSOLVE
    241 * - \ref SCIP_STAGE_SOLVING
    242 *
    243 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    244 */
    245SCIP_EXPORT
    247 SCIP* scip /**< SCIP data structure */
    248 );
    249
    250/** gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
    251 * objective function) local bound
    252 *
    253 * @return the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
    254 * objective function) local bound.
    255 *
    256 * @pre This method can be called if @p scip is in one of the following stages:
    257 * - \ref SCIP_STAGE_INITPRESOLVE
    258 * - \ref SCIP_STAGE_PRESOLVING
    259 * - \ref SCIP_STAGE_EXITPRESOLVE
    260 * - \ref SCIP_STAGE_PRESOLVED
    261 * - \ref SCIP_STAGE_INITSOLVE
    262 * - \ref SCIP_STAGE_SOLVING
    263 *
    264 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    265 */
    266SCIP_EXPORT
    268 SCIP* scip /**< SCIP data structure */
    269 );
    270
    271/** returns whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound
    272 *
    273 * @return whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound.
    274 *
    275 * @pre This method can be called if @p scip is in one of the following stages:
    276 * - \ref SCIP_STAGE_SOLVING
    277 *
    278 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    279 */
    280SCIP_EXPORT
    282 SCIP* scip /**< SCIP data structure */
    283 );
    284
    285/** gets the objective value of the root node LP or SCIP_INVALID if the root node LP was not (yet) solved
    286 *
    287 * @return the objective value of the root node LP or SCIP_INVALID if the root node LP was not (yet) solved.
    288 *
    289 * @pre This method can be called if @p scip is in one of the following stages:
    290 * - \ref SCIP_STAGE_INITPRESOLVE
    291 * - \ref SCIP_STAGE_PRESOLVING
    292 * - \ref SCIP_STAGE_EXITPRESOLVE
    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 part of the objective value of the root node LP that results from COLUMN variables only;
    303 * returns SCIP_INVALID if the root node LP was not (yet) solved
    304 *
    305 * @return the part of the objective value of the root node LP that results from COLUMN variables only;
    306 * or SCIP_INVALID if the root node LP was not (yet) solved.
    307 *
    308 * @pre This method can be called if @p scip is in one of the following stages:
    309 * - \ref SCIP_STAGE_INITPRESOLVE
    310 * - \ref SCIP_STAGE_PRESOLVING
    311 * - \ref SCIP_STAGE_EXITPRESOLVE
    312 * - \ref SCIP_STAGE_SOLVING
    313 *
    314 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    315 */
    316SCIP_EXPORT
    318 SCIP* scip /**< SCIP data structure */
    319 );
    320
    321/** gets part of the objective value of the root node LP that results from LOOSE variables only;
    322 * returns SCIP_INVALID if the root node LP was not (yet) solved
    323 *
    324 * @return the part of the objective value of the root node LP that results from LOOSE variables only;
    325 * or SCIP_INVALID if the root node LP was not (yet) solved.
    326 *
    327 * @pre This method can be called if @p scip is in one of the following stages:
    328 * - \ref SCIP_STAGE_INITPRESOLVE
    329 * - \ref SCIP_STAGE_PRESOLVING
    330 * - \ref SCIP_STAGE_EXITPRESOLVE
    331 * - \ref SCIP_STAGE_SOLVING
    332 *
    333 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    334 */
    335SCIP_EXPORT
    337 SCIP* scip /**< SCIP data structure */
    338 );
    339
    340/** gets current primal feasibility tolerance of LP */
    341SCIP_EXPORT
    343 SCIP* scip /**< SCIP data structure */
    344 );
    345
    346/** sets primal feasibility tolerance of LP */
    347SCIP_EXPORT
    349 SCIP* scip, /**< SCIP data structure */
    350 SCIP_Real newfeastol /**< new primal feasibility tolerance for LP */
    351 );
    352
    353/** resets primal feasibility tolerance of LP
    354 *
    355 * Sets primal feasibility tolerance to min of numerics/lpfeastolfactor * numerics/feastol and relaxfeastol.
    356 */
    357SCIP_EXPORT
    359 SCIP* scip /**< SCIP data structure */
    360 );
    361
    362/** gets current LP columns along with the current number of LP columns
    363 *
    364 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    365 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    366 *
    367 * @pre This method can be called if @p scip is in one of the following stages:
    368 * - \ref SCIP_STAGE_SOLVING
    369 *
    370 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    371 */
    372SCIP_EXPORT
    374 SCIP* scip, /**< SCIP data structure */
    375 SCIP_COL*** cols, /**< pointer to store the array of LP columns, or NULL */
    376 int* ncols /**< pointer to store the number of LP columns, or NULL */
    377 );
    378
    379/** gets current LP columns
    380 *
    381 * @return the current LP columns.
    382 *
    383 * @pre This method can be called if @p scip is in one of the following stages:
    384 * - \ref SCIP_STAGE_SOLVING
    385 *
    386 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    387 */
    388SCIP_EXPORT
    390 SCIP* scip /**< SCIP data structure */
    391 );
    392
    393/** gets current number of LP columns
    394 *
    395 * @return the current number of LP columns.
    396 *
    397 * @pre This method can be called if @p scip is in one of the following stages:
    398 * - \ref SCIP_STAGE_SOLVING
    399 *
    400 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    401 */
    402SCIP_EXPORT
    404 SCIP* scip /**< SCIP data structure */
    405 );
    406
    407/** gets current number of unfixed LP columns
    408 *
    409 * @return the current number of unfixed LP columns.
    410 *
    411 * @pre This method can be called if @p scip is in one of the following stages:
    412 * - \ref SCIP_STAGE_SOLVING
    413 *
    414 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    415 */
    416SCIP_EXPORT
    418 SCIP* scip /**< SCIP data structure */
    419 );
    420
    421/** gets current LP rows along with the current number of LP rows
    422 *
    423 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    424 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    425 *
    426 * @pre This method can be called if @p scip is in one of the following stages:
    427 * - \ref SCIP_STAGE_SOLVING
    428 *
    429 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    430 */
    431SCIP_EXPORT
    433 SCIP* scip, /**< SCIP data structure */
    434 SCIP_ROW*** rows, /**< pointer to store the array of LP rows, or NULL */
    435 int* nrows /**< pointer to store the number of LP rows, or NULL */
    436 );
    437
    438/** gets current LP rows
    439 *
    440 * @return the current LP rows.
    441 *
    442 * @pre This method can be called if @p scip is in one of the following stages:
    443 * - \ref SCIP_STAGE_SOLVING
    444 *
    445 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    446 */
    447SCIP_EXPORT
    449 SCIP* scip /**< SCIP data structure */
    450 );
    451
    452/** gets current number of LP rows
    453 *
    454 * @return the current number of LP rows.
    455 *
    456 * @pre This method can be called if @p scip is in one of the following stages:
    457 * - \ref SCIP_STAGE_SOLVING
    458 *
    459 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    460 */
    461SCIP_EXPORT
    463 SCIP* scip /**< SCIP data structure */
    464 );
    465
    466/** returns TRUE iff all columns, i.e. every variable with non-empty column w.r.t. all ever created rows, are present
    467 * in the LP, and FALSE, if there are additional already existing columns, that may be added to the LP in pricing
    468 *
    469 * @return TRUE iff all columns, i.e. every variable with non-empty column w.r.t. all ever created rows, are present
    470 * in the LP, and FALSE, if there are additional already existing columns, that may be added to the LP in pricing.
    471 *
    472 * @pre This method can be called if @p scip is in one of the following stages:
    473 * - \ref SCIP_STAGE_SOLVING
    474 *
    475 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    476 */
    477SCIP_EXPORT
    479 SCIP* scip /**< SCIP data structure */
    480 );
    481
    482/** returns whether the current LP solution is basic, i.e. is defined by a valid simplex basis
    483 *
    484 * @return whether the current LP solution is basic, i.e. is defined by a valid simplex basis.
    485 *
    486 * @pre This method can be called if @p scip is in one of the following stages:
    487 * - \ref SCIP_STAGE_SOLVING
    488 *
    489 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    490 */
    491SCIP_EXPORT
    493 SCIP* scip /**< SCIP data structure */
    494 );
    495
    496/** gets all indices of basic columns and rows: index i >= 0 corresponds to column i, index i < 0 to row -i-1
    497 *
    498 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    499 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    500 *
    501 * @pre This method can be called if @p scip is in one of the following stages:
    502 * - \ref SCIP_STAGE_SOLVING
    503 *
    504 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    505 */
    506SCIP_EXPORT
    508 SCIP* scip, /**< SCIP data structure */
    509 int* basisind /**< pointer to store basis indices ready to keep number of rows entries */
    510 );
    511
    512/** gets a row from the inverse basis matrix B^-1
    513 *
    514 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    515 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    516 *
    517 * @pre This method can be called if @p scip is in one of the following stages:
    518 * - \ref SCIP_STAGE_SOLVING
    519 *
    520 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    521 */
    522SCIP_EXPORT
    524 SCIP* scip, /**< SCIP data structure */
    525 int r, /**< row number */
    526 SCIP_Real* coefs, /**< array to store the coefficients of the row */
    527 int* inds, /**< array to store the non-zero indices, or NULL */
    528 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    529 * (-1: if we do not store sparsity informations) */
    530 );
    531
    532/** gets a column from the inverse basis matrix B^-1
    533 *
    534 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    535 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    536 *
    537 * @pre This method can be called if @p scip is in one of the following stages:
    538 * - \ref SCIP_STAGE_SOLVING
    539 *
    540 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    541 */
    542SCIP_EXPORT
    544 SCIP* scip, /**< SCIP data structure */
    545 int c, /**< column number of B^-1; this is NOT the number of the column in the LP
    546 * returned by SCIPcolGetLPPos(); you have to call SCIPgetBasisInd()
    547 * to get the array which links the B^-1 column numbers to the row and
    548 * column numbers of the LP! c must be between 0 and nrows-1, since the
    549 * basis has the size nrows * nrows */
    550 SCIP_Real* coefs, /**< array to store the coefficients of the column */
    551 int* inds, /**< array to store the non-zero indices, or NULL */
    552 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    553 * (-1: if we do not store sparsity informations) */
    554 );
    555
    556/** gets a row from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A)
    557 *
    558 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    559 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    560 *
    561 * @pre This method can be called if @p scip is in one of the following stages:
    562 * - \ref SCIP_STAGE_SOLVING
    563 *
    564 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    565 */
    566SCIP_EXPORT
    568 SCIP* scip, /**< SCIP data structure */
    569 int r, /**< row number */
    570 SCIP_Real* binvrow, /**< row in B^-1 from prior call to SCIPgetLPBInvRow(), or NULL */
    571 SCIP_Real* coefs, /**< array to store the coefficients of the row */
    572 int* inds, /**< array to store the non-zero indices, or NULL */
    573 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    574 * (-1: if we do not store sparsity informations) */
    575 );
    576
    577/** gets a column from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A),
    578 * i.e., it computes B^-1 * A_c with A_c being the c'th column of A
    579 *
    580 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    581 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    582 *
    583 * @pre This method can be called if @p scip is in one of the following stages:
    584 * - \ref SCIP_STAGE_SOLVING
    585 *
    586 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    587 */
    588SCIP_EXPORT
    590 SCIP* scip, /**< SCIP data structure */
    591 int c, /**< column number which can be accessed by SCIPcolGetLPPos() */
    592 SCIP_Real* coefs, /**< array to store the coefficients of the column */
    593 int* inds, /**< array to store the non-zero indices, or NULL */
    594 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    595 * (-1: if we do not store sparsity informations) */
    596 );
    597
    598/** calculates a weighted sum of all LP rows; for negative weights, the left and right hand side of the corresponding
    599 * LP row are swapped in the summation
    600 *
    601 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    602 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    603 *
    604 * @pre This method can be called if @p scip is in one of the following stages:
    605 * - \ref SCIP_STAGE_SOLVING
    606 *
    607 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    608 */
    609SCIP_EXPORT
    611 SCIP* scip, /**< SCIP data structure */
    612 SCIP_Real* weights, /**< row weights in row summation */
    613 SCIP_REALARRAY* sumcoef, /**< array to store sum coefficients indexed by variables' probindex */
    614 SCIP_Real* sumlhs, /**< pointer to store the left hand side of the row summation */
    615 SCIP_Real* sumrhs /**< pointer to store the right hand side of the row summation */
    616 );
    617
    618/** interrupts or disables the interrupt of the currently ongoing lp solve; if the lp is not currently constructed just returns with no effect
    619 *
    620 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    621 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    622 *
    623 * @pre This method can be called if @p scip is in one of the following stages:
    624 * - \ref SCIP_STAGE_SOLVING
    625 *
    626 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    627 */
    628SCIP_EXPORT
    630 SCIP* scip, /**< SCIP data structure */
    631 SCIP_Bool interrupt /**< TRUE if interrupt should be set, FALSE if it should be disabled */
    632 );
    633
    634/** writes current LP to a file
    635 *
    636 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    637 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    638 *
    639 * @pre This method can be called if @p scip is in one of the following stages:
    640 * - \ref SCIP_STAGE_SOLVING
    641 *
    642 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    643 */
    644SCIP_EXPORT
    646 SCIP* scip, /**< SCIP data structure */
    647 const char* filename /**< file name */
    648 );
    649
    650/** writes MIP relaxation of the current branch-and-bound node to a file
    651 *
    652 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    653 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    654 *
    655 * @pre This method can be called if @p scip is in one of the following stages:
    656 * - \ref SCIP_STAGE_SOLVING
    657 *
    658 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    659 */
    660SCIP_EXPORT
    662 SCIP* scip, /**< SCIP data structure */
    663 const char* filename, /**< file name */
    664 SCIP_Bool genericnames, /**< should generic names like x_i and row_j be used in order to avoid
    665 * troubles with reserved symbols? */
    666 SCIP_Bool origobj, /**< should the original objective function be used? */
    667 SCIP_Bool lazyconss /**< output removable rows as lazy constraints? */
    668 );
    669
    670/** gets the LP interface of SCIP;
    671 * with the LPI you can use all of the methods defined in lpi/lpi.h;
    672 *
    673 * @warning You have to make sure, that the full internal state of the LPI does not change or is recovered completely
    674 * after the end of the method that uses the LPI. In particular, if you manipulate the LP or its solution
    675 * (e.g. by calling one of the SCIPlpiAdd...() or one of the SCIPlpiSolve...() methods), you have to check in
    676 * advance with SCIPlpiWasSolved() whether the LP is currently solved. If this is the case, you have to make
    677 * sure, the internal solution status is recovered completely at the end of your method. This can be achieved
    678 * by getting the LPI state before applying any LPI manipulations with SCIPlpiGetState() and restoring it
    679 * afterwards with SCIPlpiSetState() and SCIPlpiFreeState(). Additionally you have to resolve the LP with the
    680 * appropriate SCIPlpiSolve...() call in order to reinstall the internal solution status.
    681 *
    682 * @warning Make also sure, that all parameter values that you have changed are set back to their original values.
    683 *
    684 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    685 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    686 *
    687 * @pre This method can be called if @p scip is in one of the following stages:
    688 * - \ref SCIP_STAGE_TRANSFORMED
    689 * - \ref SCIP_STAGE_INITPRESOLVE
    690 * - \ref SCIP_STAGE_PRESOLVING
    691 * - \ref SCIP_STAGE_EXITPRESOLVE
    692 * - \ref SCIP_STAGE_PRESOLVED
    693 * - \ref SCIP_STAGE_INITSOLVE
    694 * - \ref SCIP_STAGE_SOLVING
    695 * - \ref SCIP_STAGE_SOLVED
    696 * - \ref SCIP_STAGE_EXITSOLVE
    697 *
    698 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    699 */
    700SCIP_EXPORT
    702 SCIP* scip, /**< SCIP data structure */
    703 SCIP_LPI** lpi /**< pointer to store the LP interface */
    704 );
    705
    706/** Displays quality information about the current LP solution. An LP solution need to be available. Information printed
    707 * is subject to what the LP solver supports
    708 *
    709 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    710 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    711 *
    712 * @pre This method can be called if @p scip is in one of the following stages:
    713 * - \ref SCIP_STAGE_INIT
    714 * - \ref SCIP_STAGE_PROBLEM
    715 * - \ref SCIP_STAGE_TRANSFORMED
    716 * - \ref SCIP_STAGE_INITPRESOLVE
    717 * - \ref SCIP_STAGE_PRESOLVING
    718 * - \ref SCIP_STAGE_EXITPRESOLVE
    719 * - \ref SCIP_STAGE_PRESOLVED
    720 * - \ref SCIP_STAGE_SOLVING
    721 * - \ref SCIP_STAGE_SOLVED
    722 * - \ref SCIP_STAGE_FREE
    723 *
    724 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    725 *
    726 * @note The printing process is done via the message handler system.
    727 */
    728SCIP_EXPORT
    730 SCIP* scip, /**< SCIP data structure */
    731 FILE* file /**< output file (or NULL for standard output) */
    732 );
    733
    734/** compute relative interior point to current LP
    735 * @see SCIPlpComputeRelIntPoint
    736 *
    737 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    738 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    739 *
    740 * @pre This method can be called if @p scip is in one of the following stages:
    741 * - \ref SCIP_STAGE_TRANSFORMED
    742 * - \ref SCIP_STAGE_INITPRESOLVE
    743 * - \ref SCIP_STAGE_PRESOLVING
    744 * - \ref SCIP_STAGE_EXITPRESOLVE
    745 * - \ref SCIP_STAGE_PRESOLVED
    746 * - \ref SCIP_STAGE_SOLVING
    747 * - \ref SCIP_STAGE_SOLVED
    748 *
    749 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    750 */
    751SCIP_EXPORT
    753 SCIP* scip, /**< SCIP data structure */
    754 SCIP_Bool relaxrows, /**< should the rows be relaxed */
    755 SCIP_Bool inclobjcutoff, /**< should a row for the objective cutoff be included */
    756 SCIP_Real timelimit, /**< time limit for LP solver */
    757 int iterlimit, /**< iteration limit for LP solver */
    758 SCIP_SOL** point /**< relative interior point on exit */
    759 );
    760
    761/**@} */
    762
    763/**@addtogroup PublicColumnMethods
    764 *
    765 * @{
    766 */
    767
    768/** returns the reduced costs of a column in the last (feasible) LP
    769 *
    770 * @return the reduced costs of a column in the last (feasible) LP
    771 *
    772 * @pre this method can be called in one of the following stages of the SCIP solving process:
    773 * - \ref SCIP_STAGE_SOLVING
    774 * - \ref SCIP_STAGE_SOLVED
    775 *
    776 * @note calling this method in SCIP_STAGE_SOLVED is only recommended to experienced users and should only be called
    777 * for pure LP instances (without presolving)
    778 *
    779 * @note The return value of this method should be used carefully if the dual feasibility check was explictely disabled.
    780 */
    781SCIP_EXPORT
    783 SCIP* scip, /**< SCIP data structure */
    784 SCIP_COL* col /**< LP column */
    785 );
    786
    787/** returns the Farkas coefficient of a column in the last (infeasible) LP
    788 *
    789 * @return the Farkas coefficient of a column in the last (infeasible) LP
    790 *
    791 * @pre this method can be called in one of the following stages of the SCIP solving process:
    792 * - \ref SCIP_STAGE_SOLVING
    793 */
    794SCIP_EXPORT
    796 SCIP* scip, /**< SCIP data structure */
    797 SCIP_COL* col /**< LP column */
    798 );
    799
    800/** marks a column to be not removable from the LP in the current node
    801 *
    802 * @pre this method can be called in the following stage of the SCIP solving process:
    803 * - \ref SCIP_STAGE_SOLVING
    804 */
    805SCIP_EXPORT
    807 SCIP* scip, /**< SCIP data structure */
    808 SCIP_COL* col /**< LP column */
    809 );
    810
    811/**@} */
    812
    813/**@addtogroup PublicRowMethods
    814 *
    815 * @{
    816 */
    817
    818/** creates and captures an LP row from a constraint handler
    819 *
    820 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    821 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    822 *
    823 * @pre this method can be called in one of the following stages of the SCIP solving process:
    824 * - \ref SCIP_STAGE_SOLVING
    825 */
    826SCIP_EXPORT
    828 SCIP* scip, /**< SCIP data structure */
    829 SCIP_ROW** row, /**< pointer to row */
    830 SCIP_CONSHDLR* conshdlr, /**< constraint handler that creates the row */
    831 const char* name, /**< name of row */
    832 int len, /**< number of nonzeros in the row */
    833 SCIP_COL** cols, /**< array with columns of row entries */
    834 SCIP_Real* vals, /**< array with coefficients of row entries */
    835 SCIP_Real lhs, /**< left hand side of row */
    836 SCIP_Real rhs, /**< right hand side of row */
    837 SCIP_Bool local, /**< is row only valid locally? */
    838 SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
    839 SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
    840 );
    841
    842/** creates and captures an LP row from a constraint
    843 *
    844 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    845 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    846 *
    847 * @pre this method can be called in one of the following stages of the SCIP solving process:
    848 * - \ref SCIP_STAGE_SOLVING
    849 */
    850SCIP_EXPORT
    852 SCIP* scip, /**< SCIP data structure */
    853 SCIP_ROW** row, /**< pointer to row */
    854 SCIP_CONS* cons, /**< constraint that creates the row */
    855 const char* name, /**< name of row */
    856 int len, /**< number of nonzeros in the row */
    857 SCIP_COL** cols, /**< array with columns of row entries */
    858 SCIP_Real* vals, /**< array with coefficients of row entries */
    859 SCIP_Real lhs, /**< left hand side of row */
    860 SCIP_Real rhs, /**< right hand side of row */
    861 SCIP_Bool local, /**< is row only valid locally? */
    862 SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
    863 SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
    864 );
    865
    866/** creates and captures an LP row from a separator
    867 *
    868 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    869 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    870 *
    871 * @pre this method can be called in one of the following stages of the SCIP solving process:
    872 * - \ref SCIP_STAGE_SOLVING
    873 */
    874SCIP_EXPORT
    876 SCIP* scip, /**< SCIP data structure */
    877 SCIP_ROW** row, /**< pointer to row */
    878 SCIP_SEPA* sepa, /**< separator that creates the row */
    879 const char* name, /**< name of row */
    880 int len, /**< number of nonzeros in the row */
    881 SCIP_COL** cols, /**< array with columns of row entries */
    882 SCIP_Real* vals, /**< array with coefficients of row entries */
    883 SCIP_Real lhs, /**< left hand side of row */
    884 SCIP_Real rhs, /**< right hand side of row */
    885 SCIP_Bool local, /**< is row only valid locally? */
    886 SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
    887 SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
    888 );
    889
    890/** creates and captures an LP row from an unspecified source
    891 *
    892 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    893 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    894 *
    895 * @pre this method can be called in one of the following stages of the SCIP solving process:
    896 * - \ref SCIP_STAGE_SOLVING
    897 */
    898SCIP_EXPORT
    900 SCIP* scip, /**< SCIP data structure */
    901 SCIP_ROW** row, /**< pointer to row */
    902 const char* name, /**< name of row */
    903 int len, /**< number of nonzeros in the row */
    904 SCIP_COL** cols, /**< array with columns of row entries */
    905 SCIP_Real* vals, /**< array with coefficients of row entries */
    906 SCIP_Real lhs, /**< left hand side of row */
    907 SCIP_Real rhs, /**< right hand side of row */
    908 SCIP_Bool local, /**< is row only valid locally? */
    909 SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
    910 SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
    911 );
    912
    913/** creates and captures an LP row without any coefficients from a constraint handler
    914 *
    915 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    916 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    917 *
    918 * @pre this method can be called in one of the following stages of the SCIP solving process:
    919 * - \ref SCIP_STAGE_INITSOLVE
    920 * - \ref SCIP_STAGE_SOLVING
    921 */
    922SCIP_EXPORT
    924 SCIP* scip, /**< SCIP data structure */
    925 SCIP_ROW** row, /**< pointer to row */
    926 SCIP_CONSHDLR* conshdlr, /**< constraint handler that creates the row */
    927 const char* name, /**< name of row */
    928 SCIP_Real lhs, /**< left hand side of row */
    929 SCIP_Real rhs, /**< right hand side of row */
    930 SCIP_Bool local, /**< is row only valid locally? */
    931 SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
    932 SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
    933 );
    934
    935/** creates and captures an LP row without any coefficients from a constraint
    936 *
    937 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    938 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    939 *
    940 * @pre this method can be called in one of the following stages of the SCIP solving process:
    941 * - \ref SCIP_STAGE_INITSOLVE
    942 * - \ref SCIP_STAGE_SOLVING
    943 */
    944SCIP_EXPORT
    946 SCIP* scip, /**< SCIP data structure */
    947 SCIP_ROW** row, /**< pointer to row */
    948 SCIP_CONS* cons, /**< constraint that creates the row */
    949 const char* name, /**< name of row */
    950 SCIP_Real lhs, /**< left hand side of row */
    951 SCIP_Real rhs, /**< right hand side of row */
    952 SCIP_Bool local, /**< is row only valid locally? */
    953 SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
    954 SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
    955 );
    956
    957/** creates and captures an LP row without any coefficients from a separator
    958 *
    959 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    960 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    961 *
    962 * @pre this method can be called in one of the following stages of the SCIP solving process:
    963 * - \ref SCIP_STAGE_INITSOLVE
    964 * - \ref SCIP_STAGE_SOLVING
    965 */
    966SCIP_EXPORT
    968 SCIP* scip, /**< SCIP data structure */
    969 SCIP_ROW** row, /**< pointer to row */
    970 SCIP_SEPA* sepa, /**< separator that creates the row */
    971 const char* name, /**< name of row */
    972 SCIP_Real lhs, /**< left hand side of row */
    973 SCIP_Real rhs, /**< right hand side of row */
    974 SCIP_Bool local, /**< is row only valid locally? */
    975 SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
    976 SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
    977 );
    978
    979/** creates and captures an LP row without any coefficients from an unspecified source
    980 *
    981 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    982 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    983 *
    984 * @pre this method can be called in one of the following stages of the SCIP solving process:
    985 * - \ref SCIP_STAGE_INITSOLVE
    986 * - \ref SCIP_STAGE_SOLVING
    987 */
    988SCIP_EXPORT
    990 SCIP* scip, /**< SCIP data structure */
    991 SCIP_ROW** row, /**< pointer to row */
    992 const char* name, /**< name of row */
    993 SCIP_Real lhs, /**< left hand side of row */
    994 SCIP_Real rhs, /**< right hand side of row */
    995 SCIP_Bool local, /**< is row only valid locally? */
    996 SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
    997 SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
    998 );
    999
    1000/** increases usage counter of LP row
    1001 *
    1002 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1003 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1004 *
    1005 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1006 * - \ref SCIP_STAGE_INITSOLVE
    1007 * - \ref SCIP_STAGE_SOLVING
    1008 */
    1009SCIP_EXPORT
    1011 SCIP* scip, /**< SCIP data structure */
    1012 SCIP_ROW* row /**< row to capture */
    1013 );
    1014
    1015/** decreases usage counter of LP row, and frees memory if necessary
    1016 *
    1017 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1018 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1019 *
    1020 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1021 * - \ref SCIP_STAGE_INITSOLVE
    1022 * - \ref SCIP_STAGE_SOLVING
    1023 * - \ref SCIP_STAGE_EXITSOLVE
    1024 */
    1025SCIP_EXPORT
    1027 SCIP* scip, /**< SCIP data structure */
    1028 SCIP_ROW** row /**< pointer to LP row */
    1029 );
    1030
    1031/** changes left hand side of LP row
    1032 *
    1033 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1034 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1035 *
    1036 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1037 * - \ref SCIP_STAGE_INITSOLVE
    1038 * - \ref SCIP_STAGE_SOLVING
    1039 */
    1040SCIP_EXPORT
    1042 SCIP* scip, /**< SCIP data structure */
    1043 SCIP_ROW* row, /**< LP row */
    1044 SCIP_Real lhs /**< new left hand side */
    1045 );
    1046
    1047/** changes right hand side of LP row
    1048 *
    1049 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1050 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1051 *
    1052 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1053 * - \ref SCIP_STAGE_INITSOLVE
    1054 * - \ref SCIP_STAGE_SOLVING
    1055 */
    1056SCIP_EXPORT
    1058 SCIP* scip, /**< SCIP data structure */
    1059 SCIP_ROW* row, /**< LP row */
    1060 SCIP_Real rhs /**< new right hand side */
    1061 );
    1062
    1063/** informs row, that all subsequent additions of variables to the row should be cached and not directly applied;
    1064 * after all additions were applied, SCIPflushRowExtensions() must be called;
    1065 * while the caching of row extensions is activated, information methods of the row give invalid results;
    1066 * caching should be used, if a row is build with SCIPaddVarToRow() calls variable by variable to increase
    1067 * the performance
    1068 *
    1069 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1070 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1071 *
    1072 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1073 * - \ref SCIP_STAGE_INITSOLVE
    1074 * - \ref SCIP_STAGE_SOLVING
    1075 */
    1076SCIP_EXPORT
    1078 SCIP* scip, /**< SCIP data structure */
    1079 SCIP_ROW* row /**< LP row */
    1080 );
    1081
    1082/** flushes all cached row extensions after a call of SCIPcacheRowExtensions() and merges coefficients with
    1083 * equal columns into a single coefficient
    1084 *
    1085 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1086 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1087 *
    1088 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1089 * - \ref SCIP_STAGE_INITSOLVE
    1090 * - \ref SCIP_STAGE_SOLVING
    1091 */
    1092SCIP_EXPORT
    1094 SCIP* scip, /**< SCIP data structure */
    1095 SCIP_ROW* row /**< LP row */
    1096 );
    1097
    1098/** resolves variable to columns and adds them with the coefficient to the row
    1099 *
    1100 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1101 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1102 *
    1103 * @attention If the absolute value of val is below the SCIP epsilon tolerance, the variable will not added.
    1104 *
    1105 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1106 * - \ref SCIP_STAGE_SOLVING
    1107 *
    1108 * @note In case calling this method in the enforcement process of an lp solution, it might be that some variables,
    1109 * that were not yet in the LP (e.g. dynamic columns) will change their lp solution value returned by SCIP.
    1110 * For example, a variable, which has a negative objective value, that has no column in the lp yet, is in the lp solution
    1111 * on its upper bound (variables with status SCIP_VARSTATUS_LOOSE are in an lp solution on it's best bound), but
    1112 * creating the column, changes the solution value (variable than has status SCIP_VARSTATUS_COLUMN, and the
    1113 * initialization sets the lp solution value) to 0.0. (This leads to the conclusion that, if a constraint was
    1114 * violated, the linear relaxation might not be violated anymore.)
    1115 *
    1116 * @note When several variables are added to a row with the use of this function, performance can be improved by
    1117 * calling SCIPcacheRowExtensions() before these additions and SCIPflushRowExtensions() after.
    1118 */
    1119SCIP_EXPORT
    1121 SCIP* scip, /**< SCIP data structure */
    1122 SCIP_ROW* row, /**< LP row */
    1123 SCIP_VAR* var, /**< problem variable */
    1124 SCIP_Real val /**< value of coefficient */
    1125 );
    1126
    1127/** resolves variables to columns and adds them with the coefficients to the row;
    1128 * this method caches the row extensions and flushes them afterwards to gain better performance
    1129 *
    1130 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1131 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1132 *
    1133 * @attention If a coefficients absolute value is below the SCIP epsilon tolerance, the variable with its value is not added.
    1134 *
    1135 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1136 * - \ref SCIP_STAGE_SOLVING
    1137 */
    1138SCIP_EXPORT
    1140 SCIP* scip, /**< SCIP data structure */
    1141 SCIP_ROW* row, /**< LP row */
    1142 int nvars, /**< number of variables to add to the row */
    1143 SCIP_VAR** vars, /**< problem variables to add */
    1144 SCIP_Real* vals /**< values of coefficients */
    1145 );
    1146
    1147/** resolves variables to columns and adds them with the same single coefficient to the row;
    1148 * this method caches the row extensions and flushes them afterwards to gain better performance
    1149 *
    1150 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1151 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1152 *
    1153 * @attention If the absolute value of val is below the SCIP epsilon tolerance, the variables will not added.
    1154 *
    1155 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1156 * - \ref SCIP_STAGE_SOLVING
    1157 */
    1158SCIP_EXPORT
    1160 SCIP* scip, /**< SCIP data structure */
    1161 SCIP_ROW* row, /**< LP row */
    1162 int nvars, /**< number of variables to add to the row */
    1163 SCIP_VAR** vars, /**< problem variables to add */
    1164 SCIP_Real val /**< unique value of all coefficients */
    1165 );
    1166
    1167/** tries to find a value, such that all row coefficients, if scaled with this value become integral
    1168 *
    1169 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1170 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1171 *
    1172 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1173 * - \ref SCIP_STAGE_INITSOLVE
    1174 * - \ref SCIP_STAGE_SOLVING
    1175 */
    1176SCIP_EXPORT
    1178 SCIP* scip, /**< SCIP data structure */
    1179 SCIP_ROW* row, /**< LP row */
    1180 SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
    1181 SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
    1182 SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
    1183 SCIP_Real maxscale, /**< maximal allowed scalar */
    1184 SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
    1185 SCIP_Real* intscalar, /**< pointer to store scalar that would make the coefficients integral, or NULL */
    1186 SCIP_Bool* success /**< stores whether returned value is valid */
    1187 );
    1188
    1189/** tries to scale row, s.t. all coefficients (of integer variables) become integral
    1190 *
    1191 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1192 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1193 *
    1194 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1195 * - \ref SCIP_STAGE_INITSOLVE
    1196 * - \ref SCIP_STAGE_SOLVING
    1197 */
    1198SCIP_EXPORT
    1200 SCIP* scip, /**< SCIP data structure */
    1201 SCIP_ROW* row, /**< LP row */
    1202 SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
    1203 SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
    1204 SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
    1205 SCIP_Real maxscale, /**< maximal value to scale row with */
    1206 SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
    1207 SCIP_Bool* success /**< stores whether row could be made rational */
    1208 );
    1209
    1210/** marks a row to be not removable from the LP in the current node
    1211 *
    1212 * @pre this method can be called in the following stage of the SCIP solving process:
    1213 * - \ref SCIP_STAGE_SOLVING
    1214 */
    1215SCIP_EXPORT
    1217 SCIP* scip, /**< SCIP data structure */
    1218 SCIP_ROW* row /**< LP row */
    1219 );
    1220
    1221/** returns number of integral columns in the row
    1222 *
    1223 * @return number of integral columns in the row
    1224 *
    1225 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1226 * - \ref SCIP_STAGE_INITSOLVE
    1227 * - \ref SCIP_STAGE_SOLVING
    1228 */
    1229SCIP_EXPORT
    1231 SCIP* scip, /**< SCIP data structure */
    1232 SCIP_ROW* row /**< LP row */
    1233 );
    1234
    1235/** returns number of implied integral columns in the row
    1236 *
    1237 * @return number of implied integral columns in the row
    1238 *
    1239 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1240 * - \ref SCIP_STAGE_INITSOLVE
    1241 * - \ref SCIP_STAGE_SOLVING
    1242 */
    1243SCIP_EXPORT
    1245 SCIP* scip, /**< SCIP data structure */
    1246 SCIP_ROW* row /**< LP row */
    1247 );
    1248
    1249/** returns minimal absolute value of row vector's non-zero coefficients
    1250 *
    1251 * @return minimal absolute value of row vector's non-zero coefficients
    1252 *
    1253 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1254 * - \ref SCIP_STAGE_INITSOLVE
    1255 * - \ref SCIP_STAGE_SOLVING
    1256 */
    1257SCIP_EXPORT
    1259 SCIP* scip, /**< SCIP data structure */
    1260 SCIP_ROW* row /**< LP row */
    1261 );
    1262
    1263/** returns maximal absolute value of row vector's non-zero coefficients
    1264 *
    1265 * @return maximal absolute value of row vector's non-zero coefficients
    1266 *
    1267 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1268 * - \ref SCIP_STAGE_INITSOLVE
    1269 * - \ref SCIP_STAGE_SOLVING
    1270 */
    1271SCIP_EXPORT
    1273 SCIP* scip, /**< SCIP data structure */
    1274 SCIP_ROW* row /**< LP row */
    1275 );
    1276
    1277/** returns the minimal activity of a row w.r.t. the column's bounds
    1278 *
    1279 * @return the minimal activity of a row w.r.t. the column's bounds
    1280 *
    1281 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1282 * - \ref SCIP_STAGE_SOLVING
    1283 */
    1284SCIP_EXPORT
    1286 SCIP* scip, /**< SCIP data structure */
    1287 SCIP_ROW* row /**< LP row */
    1288 );
    1289
    1290/** returns the maximal activity of a row w.r.t. the column's bounds
    1291 *
    1292 * @return the maximal activity of a row w.r.t. the column's bounds
    1293 *
    1294 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1295 * - \ref SCIP_STAGE_SOLVING
    1296 */
    1297SCIP_EXPORT
    1299 SCIP* scip, /**< SCIP data structure */
    1300 SCIP_ROW* row /**< LP row */
    1301 );
    1302
    1303/** recalculates the activity of a row in the last LP solution
    1304 *
    1305 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1306 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1307 *
    1308 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1309 * - \ref SCIP_STAGE_SOLVING
    1310 */
    1311SCIP_EXPORT
    1313 SCIP* scip, /**< SCIP data structure */
    1314 SCIP_ROW* row /**< LP row */
    1315 );
    1316
    1317/** returns the activity of a row in the last LP solution
    1318 *
    1319 * @return activity of a row in the last LP solution
    1320 *
    1321 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1322 * - \ref SCIP_STAGE_SOLVING
    1323 */
    1324SCIP_EXPORT
    1326 SCIP* scip, /**< SCIP data structure */
    1327 SCIP_ROW* row /**< LP row */
    1328 );
    1329
    1330/** returns the feasibility of a row in the last LP solution
    1331 *
    1332 * @return the feasibility of a row in the last LP solution: negative value means infeasibility
    1333 *
    1334 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1335 * - \ref SCIP_STAGE_SOLVING
    1336 */
    1337SCIP_EXPORT
    1339 SCIP* scip, /**< SCIP data structure */
    1340 SCIP_ROW* row /**< LP row */
    1341 );
    1342
    1343/** recalculates the activity of a row for the current pseudo solution
    1344 *
    1345 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1346 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1347 *
    1348 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1349 * - \ref SCIP_STAGE_SOLVING
    1350 */
    1351SCIP_EXPORT
    1353 SCIP* scip, /**< SCIP data structure */
    1354 SCIP_ROW* row /**< LP row */
    1355 );
    1356
    1357/** returns the activity of a row for the current pseudo solution
    1358 *
    1359 * @return the activity of a row for the current pseudo solution
    1360 *
    1361 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1362 * - \ref SCIP_STAGE_SOLVING
    1363 */
    1364SCIP_EXPORT
    1366 SCIP* scip, /**< SCIP data structure */
    1367 SCIP_ROW* row /**< LP row */
    1368 );
    1369
    1370/** returns the feasibility of a row for the current pseudo solution: negative value means infeasibility
    1371 *
    1372 * @return the feasibility of a row for the current pseudo solution: negative value means infeasibility
    1373 *
    1374 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1375 * - \ref SCIP_STAGE_SOLVING
    1376 */
    1377SCIP_EXPORT
    1379 SCIP* scip, /**< SCIP data structure */
    1380 SCIP_ROW* row /**< LP row */
    1381 );
    1382
    1383/** recalculates the activity of a row in the last LP or pseudo solution
    1384 *
    1385 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1386 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1387 *
    1388 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1389 * - \ref SCIP_STAGE_SOLVING
    1390 */
    1391SCIP_EXPORT
    1393 SCIP* scip, /**< SCIP data structure */
    1394 SCIP_ROW* row /**< LP row */
    1395 );
    1396
    1397/** returns the activity of a row in the last LP or pseudo solution
    1398 *
    1399 * @return the activity of a row in the last LP or pseudo solution
    1400 *
    1401 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1402 * - \ref SCIP_STAGE_SOLVING
    1403 */
    1404SCIP_EXPORT
    1406 SCIP* scip, /**< SCIP data structure */
    1407 SCIP_ROW* row /**< LP row */
    1408 );
    1409
    1410/** returns the feasibility of a row in the last LP or pseudo solution
    1411 *
    1412 * @return the feasibility of a row in the last LP or pseudo solution
    1413 *
    1414 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1415 * - \ref SCIP_STAGE_SOLVING
    1416 */
    1417SCIP_EXPORT
    1419 SCIP* scip, /**< SCIP data structure */
    1420 SCIP_ROW* row /**< LP row */
    1421 );
    1422
    1423/** returns the activity of a row for the given primal solution
    1424 *
    1425 * @return the activitiy of a row for the given primal solution
    1426 *
    1427 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1428 * - \ref SCIP_STAGE_SOLVING
    1429 */
    1430SCIP_EXPORT
    1432 SCIP* scip, /**< SCIP data structure */
    1433 SCIP_ROW* row, /**< LP row */
    1434 SCIP_SOL* sol /**< primal CIP solution */
    1435 );
    1436
    1437/** returns the feasibility of a row for the given primal solution
    1438 *
    1439 * @return the feasibility of a row for the given primal solution
    1440 *
    1441 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1442 * - \ref SCIP_STAGE_SOLVING
    1443 */
    1444SCIP_EXPORT
    1446 SCIP* scip, /**< SCIP data structure */
    1447 SCIP_ROW* row, /**< LP row */
    1448 SCIP_SOL* sol /**< primal CIP solution */
    1449 );
    1450
    1451/** returns the parallelism of row with objective function
    1452 *
    1453 * @return 1 is returned if the row is parallel to the objective function and 0 if it is orthogonal
    1454 *
    1455 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1456 * - \ref SCIP_STAGE_SOLVING
    1457 */
    1458SCIP_EXPORT
    1460 SCIP* scip, /**< SCIP data structure */
    1461 SCIP_ROW* row /**< LP row */
    1462 );
    1463
    1464/** output row to file stream via the message handler system
    1465 *
    1466 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1467 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1468 *
    1469 * @pre this method can be called in one of the following stages of the SCIP solving process:
    1470 * - \ref SCIP_STAGE_INITSOLVE
    1471 * - \ref SCIP_STAGE_SOLVING
    1472 * - \ref SCIP_STAGE_SOLVED
    1473 * - \ref SCIP_STAGE_EXITSOLVE
    1474 */
    1475SCIP_EXPORT
    1477 SCIP* scip, /**< SCIP data structure */
    1478 SCIP_ROW* row, /**< LP row */
    1479 FILE* file /**< output file (or NULL for standard output) */
    1480 );
    1481
    1482/**@} */
    1483
    1484/**@addtogroup PublicLPDivingMethods
    1485 *
    1486 * @{
    1487 */
    1488
    1489/** initiates LP diving, making methods SCIPchgVarObjDive(), SCIPchgVarLbDive(), and SCIPchgVarUbDive() available
    1490 *
    1491 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1492 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1493 *
    1494 * @pre This method can be called if @p scip is in one of the following stages:
    1495 * - \ref SCIP_STAGE_SOLVING
    1496 *
    1497 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1498 *
    1499 * @note diving is allowed even if the current LP is not flushed, not solved, or not solved to optimality; be aware
    1500 * that solving the (first) diving LP may take longer than expect and that the latter two cases could stem from
    1501 * numerical troubles during the last LP solve; because of this, most users will want to call this method only if
    1502 * SCIPgetLPSolstat(scip) == SCIP_LPSOLSTAT_OPTIMAL
    1503 */
    1504SCIP_EXPORT
    1506 SCIP* scip /**< SCIP data structure */
    1507 );
    1508
    1509/** quits LP diving and resets bounds and objective values of columns to the current node's values
    1510 *
    1511 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1512 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1513 *
    1514 * @pre This method can be called if @p scip is in one of the following stages:
    1515 * - \ref SCIP_STAGE_SOLVING
    1516 *
    1517 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1518 */
    1519SCIP_EXPORT
    1521 SCIP* scip /**< SCIP data structure */
    1522 );
    1523
    1524/** changes cutoffbound in current dive
    1525 *
    1526 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1527 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1528 *
    1529 * @pre This method can be called if @p scip is in one of the following stages:
    1530 * - \ref SCIP_STAGE_SOLVING
    1531 *
    1532 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1533 */
    1534SCIP_EXPORT
    1536 SCIP* scip, /**< SCIP data structure */
    1537 SCIP_Real newcutoffbound /**< new cutoffbound */
    1538 );
    1539
    1540/** changes variable's objective value in current dive
    1541 *
    1542 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1543 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1544 *
    1545 * @pre This method can be called if @p scip is in one of the following stages:
    1546 * - \ref SCIP_STAGE_SOLVING
    1547 *
    1548 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1549 */
    1550SCIP_EXPORT
    1552 SCIP* scip, /**< SCIP data structure */
    1553 SCIP_VAR* var, /**< variable to change the objective value for */
    1554 SCIP_Real newobj /**< new objective value */
    1555 );
    1556
    1557/** changes variable's lower bound in current dive
    1558 *
    1559 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1560 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1561 *
    1562 * @pre This method can be called if @p scip is in one of the following stages:
    1563 * - \ref SCIP_STAGE_SOLVING
    1564 *
    1565 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1566 */
    1567SCIP_EXPORT
    1569 SCIP* scip, /**< SCIP data structure */
    1570 SCIP_VAR* var, /**< variable to change the bound for */
    1571 SCIP_Real newbound /**< new value for bound */
    1572 );
    1573
    1574/** changes variable's upper bound in current dive
    1575 *
    1576 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1577 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1578 *
    1579 * @pre This method can be called if @p scip is in one of the following stages:
    1580 * - \ref SCIP_STAGE_SOLVING
    1581 *
    1582 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1583 */
    1584SCIP_EXPORT
    1586 SCIP* scip, /**< SCIP data structure */
    1587 SCIP_VAR* var, /**< variable to change the bound for */
    1588 SCIP_Real newbound /**< new value for bound */
    1589 );
    1590
    1591/** adds a row to the LP in current dive
    1592 *
    1593 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1594 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1595 *
    1596 * @pre This method can be called if @p scip is in one of the following stages:
    1597 * - \ref SCIP_STAGE_SOLVING
    1598 *
    1599 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1600 */
    1601SCIP_EXPORT
    1603 SCIP* scip, /**< SCIP data structure */
    1604 SCIP_ROW* row /**< row to be added */
    1605 );
    1606
    1607/** changes row lhs in current dive, change will be undone after diving ends, for permanent changes use SCIPchgRowLhs()
    1608 *
    1609 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1610 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1611 *
    1612 * @pre This method can be called if @p scip is in one of the following stages:
    1613 * - \ref SCIP_STAGE_SOLVING
    1614 *
    1615 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1616 */
    1617SCIP_EXPORT
    1619 SCIP* scip, /**< SCIP data structure */
    1620 SCIP_ROW* row, /**< row to change the lhs for */
    1621 SCIP_Real newlhs /**< new value for lhs */
    1622 );
    1623
    1624/** changes row rhs in current dive, change will be undone after diving ends, for permanent changes use SCIPchgRowRhs()
    1625 *
    1626 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1627 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1628 *
    1629 * @pre This method can be called if @p scip is in one of the following stages:
    1630 * - \ref SCIP_STAGE_SOLVING
    1631 *
    1632 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1633 */
    1634SCIP_EXPORT
    1636 SCIP* scip, /**< SCIP data structure */
    1637 SCIP_ROW* row, /**< row to change the lhs for */
    1638 SCIP_Real newrhs /**< new value for rhs */
    1639 );
    1640
    1641/** gets variable's objective value in current dive
    1642 *
    1643 * @return the variable's objective value in current dive.
    1644 *
    1645 * @pre This method can be called if @p scip is in one of the following stages:
    1646 * - \ref SCIP_STAGE_SOLVING
    1647 *
    1648 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1649 */
    1650SCIP_EXPORT
    1652 SCIP* scip, /**< SCIP data structure */
    1653 SCIP_VAR* var /**< variable to get the bound for */
    1654 );
    1655
    1656/** gets variable's lower bound in current dive
    1657 *
    1658 * @return the variable's lower bound in current dive.
    1659 *
    1660 * @pre This method can be called if @p scip is in one of the following stages:
    1661 * - \ref SCIP_STAGE_SOLVING
    1662 *
    1663 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1664 */
    1665SCIP_EXPORT
    1667 SCIP* scip, /**< SCIP data structure */
    1668 SCIP_VAR* var /**< variable to get the bound for */
    1669 );
    1670
    1671/** gets variable's upper bound in current dive
    1672 *
    1673 * @return the variable's upper bound in current dive.
    1674 *
    1675 * @pre This method can be called if @p scip is in one of the following stages:
    1676 * - \ref SCIP_STAGE_SOLVING
    1677 *
    1678 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1679 */
    1680SCIP_EXPORT
    1682 SCIP* scip, /**< SCIP data structure */
    1683 SCIP_VAR* var /**< variable to get the bound for */
    1684 );
    1685/** solves the LP of the current dive; no separation or pricing is applied
    1686 *
    1687 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
    1688 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
    1689 *
    1690 * @pre This method can be called if @p scip is in one of the following stages:
    1691 * - \ref SCIP_STAGE_SOLVING
    1692 *
    1693 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1694 *
    1695 * @note be aware that the LP solve may take longer than expected if SCIPgetLPSolstat(scip) != SCIP_LPSOLSTAT_OPTIMAL,
    1696 * compare the explanation of SCIPstartDive()
    1697 */
    1698SCIP_EXPORT
    1700 SCIP* scip, /**< SCIP data structure */
    1701 int itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
    1702 SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
    1703 SCIP_Bool* cutoff /**< pointer to store whether the diving LP was infeasible or the objective
    1704 * limit was reached (or NULL, if not needed) */
    1705 );
    1706
    1707/** returns the number of the node in the current branch and bound run, where the last LP was solved in diving
    1708 * or probing mode
    1709 *
    1710 * @return the number of the node in the current branch and bound run, where the last LP was solved in diving
    1711 * or probing mode.
    1712 *
    1713 * @pre This method can be called if @p scip is in one of the following stages:
    1714 * - \ref SCIP_STAGE_TRANSFORMING
    1715 * - \ref SCIP_STAGE_TRANSFORMED
    1716 * - \ref SCIP_STAGE_INITPRESOLVE
    1717 * - \ref SCIP_STAGE_PRESOLVING
    1718 * - \ref SCIP_STAGE_EXITPRESOLVE
    1719 * - \ref SCIP_STAGE_PRESOLVED
    1720 * - \ref SCIP_STAGE_INITSOLVE
    1721 * - \ref SCIP_STAGE_SOLVING
    1722 * - \ref SCIP_STAGE_SOLVED
    1723 * - \ref SCIP_STAGE_EXITSOLVE
    1724 * - \ref SCIP_STAGE_FREETRANS
    1725 *
    1726 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1727 */
    1728SCIP_EXPORT
    1730 SCIP* scip /**< SCIP data structure */
    1731 );
    1732
    1733/** returns whether we are in diving mode
    1734 *
    1735 * @return whether we are in diving mode.
    1736 *
    1737 * @pre This method can be called if @p scip is in one of the following stages:
    1738 * - \ref SCIP_STAGE_TRANSFORMING
    1739 * - \ref SCIP_STAGE_TRANSFORMED
    1740 * - \ref SCIP_STAGE_INITPRESOLVE
    1741 * - \ref SCIP_STAGE_PRESOLVING
    1742 * - \ref SCIP_STAGE_EXITPRESOLVE
    1743 * - \ref SCIP_STAGE_PRESOLVED
    1744 * - \ref SCIP_STAGE_INITSOLVE
    1745 * - \ref SCIP_STAGE_SOLVING
    1746 * - \ref SCIP_STAGE_SOLVED
    1747 * - \ref SCIP_STAGE_EXITSOLVE
    1748 * - \ref SCIP_STAGE_FREETRANS
    1749 *
    1750 * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
    1751 */
    1752SCIP_EXPORT
    1754 SCIP* scip /**< SCIP data structure */
    1755 );
    1756
    1757/** computes two measures for dual degeneracy (dual degeneracy rate and variable-constraint ratio)
    1758 * based on the changes applied when reducing the problem to the optimal face
    1759 *
    1760 * returns the dual degeneracy rate, i.e., the share of nonbasic variables with reduced cost 0
    1761 * and the variable-constraint ratio, i.e., the number of unfixed variables in relation to the basis size
    1762 */
    1763SCIP_EXPORT
    1765 SCIP* scip, /**< SCIP data structure */
    1766 SCIP_Real* degeneracy, /**< pointer to store the dual degeneracy rate */
    1767 SCIP_Real* varconsratio /**< pointer to store the variable constraint ratio */
    1768 );
    1769
    1770/**@} */
    1771
    1772#ifdef __cplusplus
    1773}
    1774#endif
    1775
    1776#endif
    SCIP_Real * r
    Definition: circlepacking.c:59
    common defines and data types used in all packages of SCIP
    #define SCIP_Longint
    Definition: def.h:141
    #define SCIP_Bool
    Definition: def.h:91
    #define SCIP_Real
    Definition: def.h:156
    SCIP_Real SCIPgetColRedcost(SCIP *scip, SCIP_COL *col)
    Definition: scip_lp.c:1163
    SCIP_Real SCIPgetColFarkasCoef(SCIP *scip, SCIP_COL *col)
    Definition: scip_lp.c:1189
    void SCIPmarkColNotRemovableLocal(SCIP *scip, SCIP_COL *col)
    Definition: scip_lp.c:1211
    SCIP_RETCODE SCIPchgVarLbDive(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
    Definition: scip_lp.c:2384
    SCIP_RETCODE SCIPchgVarUbDive(SCIP *scip, SCIP_VAR *var, SCIP_Real newbound)
    Definition: scip_lp.c:2416
    SCIP_RETCODE SCIPchgCutoffboundDive(SCIP *scip, SCIP_Real newcutoffbound)
    Definition: scip_lp.c:2313
    SCIP_RETCODE SCIPchgRowLhsDive(SCIP *scip, SCIP_ROW *row, SCIP_Real newlhs)
    Definition: scip_lp.c:2487
    SCIP_RETCODE SCIPaddRowDive(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:2448
    SCIP_Real SCIPgetVarLbDive(SCIP *scip, SCIP_VAR *var)
    Definition: scip_lp.c:2581
    SCIP_Real SCIPgetVarUbDive(SCIP *scip, SCIP_VAR *var)
    Definition: scip_lp.c:2610
    SCIP_RETCODE SCIPchgRowRhsDive(SCIP *scip, SCIP_ROW *row, SCIP_Real newrhs)
    Definition: scip_lp.c:2520
    SCIP_Real SCIPgetVarObjDive(SCIP *scip, SCIP_VAR *var)
    Definition: scip_lp.c:2552
    SCIP_RETCODE SCIPstartDive(SCIP *scip)
    Definition: scip_lp.c:2206
    SCIP_RETCODE SCIPgetLPDualDegeneracy(SCIP *scip, SCIP_Real *degeneracy, SCIP_Real *varconsratio)
    Definition: scip_lp.c:2757
    SCIP_RETCODE SCIPchgVarObjDive(SCIP *scip, SCIP_VAR *var, SCIP_Real newobj)
    Definition: scip_lp.c:2343
    SCIP_RETCODE SCIPsolveDiveLP(SCIP *scip, int itlim, SCIP_Bool *lperror, SCIP_Bool *cutoff)
    Definition: scip_lp.c:2643
    SCIP_RETCODE SCIPendDive(SCIP *scip)
    Definition: scip_lp.c:2255
    SCIP_Bool SCIPinDive(SCIP *scip)
    Definition: scip_lp.c:2740
    SCIP_Longint SCIPgetLastDivenode(SCIP *scip)
    Definition: scip_lp.c:2710
    SCIP_RETCODE SCIPflushLP(SCIP *scip)
    Definition: scip_lp.c:154
    SCIP_Bool SCIPhasCurrentNodeLP(SCIP *scip)
    Definition: scip_lp.c:87
    SCIP_Real SCIPgetLPLooseObjval(SCIP *scip)
    Definition: scip_lp.c:289
    SCIP_RETCODE SCIPconstructLP(SCIP *scip, SCIP_Bool *cutoff)
    Definition: scip_lp.c:130
    SCIP_Bool SCIPisLPRelax(SCIP *scip)
    Definition: scip_lp.c:231
    SCIP_RETCODE SCIPprintLPSolutionQuality(SCIP *scip, FILE *file)
    Definition: scip_lp.c:1030
    SCIP_Bool SCIPisLPPrimalReliable(SCIP *scip)
    Definition: scip_lp.c:195
    SCIP_Bool SCIPisLPConstructed(SCIP *scip)
    Definition: scip_lp.c:105
    SCIP_RETCODE SCIPgetLPBasisInd(SCIP *scip, int *basisind)
    Definition: scip_lp.c:692
    SCIP_RETCODE SCIPgetLPBInvACol(SCIP *scip, int c, SCIP_Real *coefs, int *inds, int *ninds)
    Definition: scip_lp.c:825
    SCIP_RETCODE SCIPgetLPColsData(SCIP *scip, SCIP_COL ***cols, int *ncols)
    Definition: scip_lp.c:477
    SCIP_RETCODE SCIPgetLPRowsData(SCIP *scip, SCIP_ROW ***rows, int *nrows)
    Definition: scip_lp.c:576
    SCIP_ROW ** SCIPgetLPRows(SCIP *scip)
    Definition: scip_lp.c:611
    SCIP_Real SCIPgetPseudoObjval(SCIP *scip)
    Definition: scip_lp.c:339
    SCIP_RETCODE SCIPcomputeLPRelIntPoint(SCIP *scip, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_SOL **point)
    Definition: scip_lp.c:1103
    void SCIPresetLPFeastol(SCIP *scip)
    Definition: scip_lp.c:458
    SCIP_Real SCIPgetLPColumnObjval(SCIP *scip)
    Definition: scip_lp.c:271
    int SCIPgetNLPRows(SCIP *scip)
    Definition: scip_lp.c:632
    SCIP_RETCODE SCIPsumLPRows(SCIP *scip, SCIP_Real *weights, SCIP_REALARRAY *sumcoef, SCIP_Real *sumlhs, SCIP_Real *sumrhs)
    Definition: scip_lp.c:858
    SCIP_RETCODE SCIPgetLPI(SCIP *scip, SCIP_LPI **lpi)
    Definition: scip_lp.c:994
    SCIP_RETCODE SCIPgetLPBInvARow(SCIP *scip, int r, SCIP_Real *binvrow, SCIP_Real *coefs, int *inds, int *ninds)
    Definition: scip_lp.c:791
    SCIP_Real SCIPgetGlobalPseudoObjval(SCIP *scip)
    Definition: scip_lp.c:314
    SCIP_LPSOLSTAT SCIPgetLPSolstat(SCIP *scip)
    Definition: scip_lp.c:174
    SCIP_COL ** SCIPgetLPCols(SCIP *scip)
    Definition: scip_lp.c:512
    SCIP_Real SCIPgetLPRootObjval(SCIP *scip)
    Definition: scip_lp.c:378
    SCIP_RETCODE SCIPwriteMIP(SCIP *scip, const char *filename, SCIP_Bool genericnames, SCIP_Bool origobj, SCIP_Bool lazyconss)
    Definition: scip_lp.c:938
    SCIP_Bool SCIPallColsInLP(SCIP *scip)
    Definition: scip_lp.c:655
    SCIP_Real SCIPgetLPRootColumnObjval(SCIP *scip)
    Definition: scip_lp.c:401
    SCIP_Real SCIPgetLPObjval(SCIP *scip)
    Definition: scip_lp.c:253
    void SCIPsetLPFeastol(SCIP *scip, SCIP_Real newfeastol)
    Definition: scip_lp.c:444
    SCIP_Real SCIPgetLPFeastol(SCIP *scip)
    Definition: scip_lp.c:434
    int SCIPgetNUnfixedLPCols(SCIP *scip)
    Definition: scip_lp.c:554
    int SCIPgetNLPCols(SCIP *scip)
    Definition: scip_lp.c:533
    SCIP_RETCODE SCIPgetLPBInvCol(SCIP *scip, int c, SCIP_Real *coefs, int *inds, int *ninds)
    Definition: scip_lp.c:755
    SCIP_RETCODE SCIPwriteLP(SCIP *scip, const char *filename)
    Definition: scip_lp.c:907
    SCIP_Bool SCIPisLPSolBasic(SCIP *scip)
    Definition: scip_lp.c:673
    SCIP_RETCODE SCIPgetLPBInvRow(SCIP *scip, int r, SCIP_Real *coefs, int *inds, int *ninds)
    Definition: scip_lp.c:720
    SCIP_Real SCIPgetLPRootLooseObjval(SCIP *scip)
    Definition: scip_lp.c:424
    SCIP_Bool SCIPisLPDualReliable(SCIP *scip)
    Definition: scip_lp.c:213
    SCIP_RETCODE SCIPinterruptLP(SCIP *scip, SCIP_Bool interrupt)
    Definition: scip_lp.c:880
    SCIP_Bool SCIPisRootLPRelax(SCIP *scip)
    Definition: scip_lp.c:357
    SCIP_Real SCIPgetRowMaxCoef(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1886
    SCIP_Real SCIPgetRowMinCoef(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1868
    SCIP_RETCODE SCIPcreateRowConshdlr(SCIP *scip, SCIP_ROW **row, SCIP_CONSHDLR *conshdlr, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
    Definition: scip_lp.c:1233
    SCIP_RETCODE SCIPcacheRowExtensions(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1581
    SCIP_RETCODE SCIPchgRowLhs(SCIP *scip, SCIP_ROW *row, SCIP_Real lhs)
    Definition: scip_lp.c:1529
    SCIP_Real SCIPgetRowMinActivity(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1903
    SCIP_Real SCIPgetRowFeasibility(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:2088
    SCIP_RETCODE SCIPcreateRowCons(SCIP *scip, SCIP_ROW **row, SCIP_CONS *cons, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
    Definition: scip_lp.c:1267
    SCIP_Real SCIPgetRowLPActivity(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1957
    SCIP_RETCODE SCIPaddVarsToRowSameCoef(SCIP *scip, SCIP_ROW *row, int nvars, SCIP_VAR **vars, SCIP_Real val)
    Definition: scip_lp.c:1718
    SCIP_RETCODE SCIPcreateEmptyRowCons(SCIP *scip, SCIP_ROW **row, SCIP_CONS *cons, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
    Definition: scip_lp.c:1398
    SCIP_Real SCIPgetRowMaxActivity(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1920
    SCIP_RETCODE SCIPrecalcRowPseudoActivity(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1992
    SCIP_RETCODE SCIPflushRowExtensions(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1604
    SCIP_RETCODE SCIPrecalcRowActivity(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:2046
    SCIP_RETCODE SCIPcreateEmptyRowConshdlr(SCIP *scip, SCIP_ROW **row, SCIP_CONSHDLR *conshdlr, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
    Definition: scip_lp.c:1367
    SCIP_Real SCIPgetRowPseudoActivity(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:2011
    int SCIPgetRowNumImpliedIntCols(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1850
    SCIP_RETCODE SCIPmakeRowIntegral(SCIP *scip, SCIP_ROW *row, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Bool *success)
    Definition: scip_lp.c:1790
    SCIP_RETCODE SCIPaddVarToRow(SCIP *scip, SCIP_ROW *row, SCIP_VAR *var, SCIP_Real val)
    Definition: scip_lp.c:1646
    SCIP_RETCODE SCIPprintRow(SCIP *scip, SCIP_ROW *row, FILE *file)
    Definition: scip_lp.c:2176
    SCIP_Real SCIPgetRowActivity(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:2068
    SCIP_RETCODE SCIPcaptureRow(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1486
    SCIP_Real SCIPgetRowSolFeasibility(SCIP *scip, SCIP_ROW *row, SCIP_SOL *sol)
    Definition: scip_lp.c:2131
    SCIP_RETCODE SCIPreleaseRow(SCIP *scip, SCIP_ROW **row)
    Definition: scip_lp.c:1508
    SCIP_Real SCIPgetRowPseudoFeasibility(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:2028
    SCIP_RETCODE SCIPcreateRowUnspec(SCIP *scip, SCIP_ROW **row, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
    Definition: scip_lp.c:1335
    SCIP_RETCODE SCIPcreateEmptyRowSepa(SCIP *scip, SCIP_ROW **row, SCIP_SEPA *sepa, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
    Definition: scip_lp.c:1429
    SCIP_RETCODE SCIPrecalcRowLPActivity(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1938
    SCIP_RETCODE SCIPcreateEmptyRowUnspec(SCIP *scip, SCIP_ROW **row, const char *name, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
    Definition: scip_lp.c:1458
    void SCIPmarkRowNotRemovableLocal(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1814
    SCIP_Real SCIPgetRowLPFeasibility(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1974
    SCIP_RETCODE SCIPchgRowRhs(SCIP *scip, SCIP_ROW *row, SCIP_Real rhs)
    Definition: scip_lp.c:1553
    SCIP_Real SCIPgetRowObjParallelism(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:2154
    SCIP_RETCODE SCIPaddVarsToRow(SCIP *scip, SCIP_ROW *row, int nvars, SCIP_VAR **vars, SCIP_Real *vals)
    Definition: scip_lp.c:1672
    SCIP_RETCODE SCIPcreateRowSepa(SCIP *scip, SCIP_ROW **row, SCIP_SEPA *sepa, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
    Definition: scip_lp.c:1301
    int SCIPgetRowNumIntCols(SCIP *scip, SCIP_ROW *row)
    Definition: scip_lp.c:1832
    SCIP_RETCODE SCIPcalcRowIntegralScalar(SCIP *scip, SCIP_ROW *row, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Real *intscalar, SCIP_Bool *success)
    Definition: scip_lp.c:1761
    SCIP_Real SCIPgetRowSolActivity(SCIP *scip, SCIP_ROW *row, SCIP_SOL *sol)
    Definition: scip_lp.c:2108
    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 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