Scippy

    SCIP

    Solving Constraint Integer Programs

    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 lp.h
    26 * @ingroup INTERNALAPI
    27 * @brief internal methods for LP management
    28 * @author Tobias Achterberg
    29 * @author Marc Pfetsch
    30 * @author Kati Wolter
    31 * @author Gerald Gamrath
    32 */
    33
    34/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    35
    36#ifndef __SCIP_LP_H__
    37#define __SCIP_LP_H__
    38
    39
    40#include <stdio.h>
    41
    42#include "scip/def.h"
    44#include "scip/type_set.h"
    45#include "scip/type_stat.h"
    46#include "scip/type_misc.h"
    47#include "scip/type_lp.h"
    48#include "scip/type_var.h"
    49#include "scip/type_prob.h"
    50#include "scip/type_sol.h"
    51#include "scip/type_branch.h"
    52#include "scip/type_message.h"
    53#include "scip/pub_lp.h"
    54
    55#include "scip/struct_lp.h"
    56
    57#ifdef __cplusplus
    58extern "C" {
    59#endif
    60
    61
    62/*
    63 * double linked coefficient matrix methods
    64 */
    65
    66/** insert column coefficients in corresponding rows */
    68 SCIP_COL* col, /**< column data */
    69 BMS_BLKMEM* blkmem, /**< block memory */
    70 SCIP_SET* set, /**< global SCIP settings */
    71 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    72 SCIP_LP* lp /**< current LP data */
    73 );
    74
    75/** removes column coefficients from corresponding rows */
    77 SCIP_COL* col, /**< column data */
    78 BMS_BLKMEM* blkmem, /**< block memory */
    79 SCIP_SET* set, /**< global SCIP settings */
    80 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    81 SCIP_LP* lp /**< current LP data */
    82 );
    83
    84/** insert row coefficients in corresponding columns */
    86 SCIP_ROW* row, /**< row data */
    87 BMS_BLKMEM* blkmem, /**< block memory */
    88 SCIP_SET* set, /**< global SCIP settings */
    89 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    90 SCIP_LP* lp /**< current LP data */
    91 );
    92
    93/** removes row coefficients from corresponding columns */
    95 SCIP_ROW* row, /**< row data */
    96 SCIP_SET* set, /**< global SCIP settings */
    97 SCIP_LP* lp /**< current LP data */
    98 );
    99
    100/*
    101 * Column methods
    102 */
    103
    104/** creates an LP column */
    106 SCIP_COL** col, /**< pointer to column data */
    107 BMS_BLKMEM* blkmem, /**< block memory */
    108 SCIP_SET* set, /**< global SCIP settings */
    109 SCIP_STAT* stat, /**< problem statistics */
    110 SCIP_VAR* var, /**< variable, this column represents */
    111 int len, /**< number of nonzeros in the column */
    112 SCIP_ROW** rows, /**< array with rows of column entries */
    113 SCIP_Real* vals, /**< array with coefficients of column entries */
    114 SCIP_Bool removable /**< should the column be removed from the LP due to aging or cleanup? */
    115 );
    116
    117/** frees an LP column */
    119 SCIP_COL** col, /**< pointer to LP column */
    120 BMS_BLKMEM* blkmem, /**< block memory */
    121 SCIP_SET* set, /**< global SCIP settings */
    122 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    123 SCIP_LP* lp /**< current LP data */
    124 );
    125
    126/** output column to file stream */
    127void SCIPcolPrint(
    128 SCIP_COL* col, /**< LP column */
    129 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    130 FILE* file /**< output file (or NULL for standard output) */
    131 );
    132
    133/** adds a previously non existing coefficient to an LP column */
    135 SCIP_COL* col, /**< LP column */
    136 BMS_BLKMEM* blkmem, /**< block memory */
    137 SCIP_SET* set, /**< global SCIP settings */
    138 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    139 SCIP_LP* lp, /**< current LP data */
    140 SCIP_ROW* row, /**< LP row */
    141 SCIP_Real val /**< value of coefficient */
    142 );
    143
    144/** deletes coefficient from column */
    146 SCIP_COL* col, /**< column to be changed */
    147 BMS_BLKMEM* blkmem, /**< block memory */
    148 SCIP_SET* set, /**< global SCIP settings */
    149 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    150 SCIP_LP* lp, /**< current LP data */
    151 SCIP_ROW* row /**< coefficient to be deleted */
    152 );
    153
    154/** changes or adds a coefficient to an LP column */
    156 SCIP_COL* col, /**< LP column */
    157 BMS_BLKMEM* blkmem, /**< block memory */
    158 SCIP_SET* set, /**< global SCIP settings */
    159 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    160 SCIP_LP* lp, /**< current LP data */
    161 SCIP_ROW* row, /**< LP row */
    162 SCIP_Real val /**< value of coefficient */
    163 );
    164
    165/** increases value of an existing or nonexisting coefficient in an LP column */
    167 SCIP_COL* col, /**< LP column */
    168 BMS_BLKMEM* blkmem, /**< block memory */
    169 SCIP_SET* set, /**< global SCIP settings */
    170 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    171 SCIP_LP* lp, /**< current LP data */
    172 SCIP_ROW* row, /**< LP row */
    173 SCIP_Real incval /**< value to add to the coefficient */
    174 );
    175
    176/** changes objective value of column */
    178 SCIP_COL* col, /**< LP column to change */
    179 SCIP_SET* set, /**< global SCIP settings */
    180 SCIP_LP* lp, /**< current LP data */
    181 SCIP_Real newobj /**< new objective value */
    182 );
    183
    184/** changes lower bound of column */
    186 SCIP_COL* col, /**< LP column to change */
    187 SCIP_SET* set, /**< global SCIP settings */
    188 SCIP_LP* lp, /**< current LP data */
    189 SCIP_Real newlb /**< new lower bound value */
    190 );
    191
    192/** changes upper bound of column */
    194 SCIP_COL* col, /**< LP column to change */
    195 SCIP_SET* set, /**< global SCIP settings */
    196 SCIP_LP* lp, /**< current LP data */
    197 SCIP_Real newub /**< new upper bound value */
    198 );
    199
    200/** calculates the reduced costs of a column using the given dual solution vector */
    202 SCIP_COL* col, /**< LP column */
    203 SCIP_Real* dualsol /**< dual solution vector for current LP rows */
    204 );
    205
    206/** gets the reduced costs of a column in last LP or after recalculation */
    208 SCIP_COL* col, /**< LP column */
    209 SCIP_STAT* stat, /**< problem statistics */
    210 SCIP_LP* lp /**< current LP data */
    211 );
    212
    213/** gets the feasibility of (the dual row of) a column in last LP or after recalculation */
    215 SCIP_COL* col, /**< LP column */
    216 SCIP_SET* set, /**< global SCIP settings */
    217 SCIP_STAT* stat, /**< problem statistics */
    218 SCIP_LP* lp /**< current LP data */
    219 );
    220
    221/** calculates the Farkas coefficient y^T A_i of a column i using the given dual Farkas vector y */
    223 SCIP_COL* col, /**< LP column */
    224 SCIP_Real* dualfarkas /**< dense dual Farkas vector for current LP rows */
    225 );
    226
    227/** gets the Farkas coefficient y^T A_i of a column i in last LP (which must be infeasible) */
    229 SCIP_COL* col, /**< LP column */
    230 SCIP_STAT* stat, /**< problem statistics */
    231 SCIP_LP* lp /**< current LP data */
    232 );
    233
    234/** gets the Farkas value of a column in last LP (which must be infeasible), i.e. the Farkas coefficient y^T A_i times
    235 * the best bound for this coefficient, i.e. max{y^T A_i x_i | lb <= x_i <= ub}
    236 */
    238 SCIP_COL* col, /**< LP column */
    239 SCIP_STAT* stat, /**< problem statistics */
    240 SCIP_LP* lp /**< current LP data */
    241 );
    242
    243/** start strong branching - call before any strong branching */
    245 SCIP_LP* lp /**< LP data */
    246 );
    247
    248/** end strong branching - call after any strong branching */
    250 SCIP_LP* lp /**< LP data */
    251 );
    252
    253/** sets strong branching information for a column variable */
    255 SCIP_COL* col, /**< LP column */
    256 SCIP_SET* set, /**< global SCIP settings */
    257 SCIP_STAT* stat, /**< dynamic problem statistics */
    258 SCIP_LP* lp, /**< LP data */
    259 SCIP_Real lpobjval, /**< objective value of the current LP */
    260 SCIP_Real primsol, /**< primal solution value of the column in the current LP */
    261 SCIP_Real sbdown, /**< dual bound after branching column down */
    262 SCIP_Real sbup, /**< dual bound after branching column up */
    263 SCIP_Bool sbdownvalid, /**< is the returned down value a valid dual bound? */
    264 SCIP_Bool sbupvalid, /**< is the returned up value a valid dual bound? */
    265 SCIP_Longint iter, /**< total number of strong branching iterations */
    266 int itlim /**< iteration limit applied to the strong branching call */
    267 );
    268
    269/** invalidates strong branching information for a column variable */
    271 SCIP_COL* col, /**< LP column */
    272 SCIP_SET* set, /**< global SCIP settings */
    273 SCIP_STAT* stat, /**< dynamic problem statistics */
    274 SCIP_LP* lp /**< LP data */
    275 );
    276
    277/** gets strong branching information on a column variable */
    279 SCIP_COL* col, /**< LP column */
    280 SCIP_Bool integral, /**< should integral strong branching be performed? */
    281 SCIP_SET* set, /**< global SCIP settings */
    282 SCIP_STAT* stat, /**< dynamic problem statistics */
    283 SCIP_PROB* prob, /**< problem data */
    284 SCIP_LP* lp, /**< LP data */
    285 int itlim, /**< iteration limit for strong branchings */
    286 SCIP_Bool updatecol, /**< should col be updated, or should it stay in its current state ? */
    287 SCIP_Bool updatestat, /**< should stat be updated, or should it stay in its current state ? */
    288 SCIP_Real* down, /**< stores dual bound after branching column down */
    289 SCIP_Real* up, /**< stores dual bound after branching column up */
    290 SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
    291 * otherwise, it can only be used as an estimate value */
    292 SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
    293 * otherwise, it can only be used as an estimate value */
    294 SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred */
    295 );
    296
    297/** gets strong branching information on column variables */
    299 SCIP_COL** cols, /**< LP columns */
    300 int ncols, /**< number of columns */
    301 SCIP_Bool integral, /**< should integral strong branching be performed? */
    302 SCIP_SET* set, /**< global SCIP settings */
    303 SCIP_STAT* stat, /**< dynamic problem statistics */
    304 SCIP_PROB* prob, /**< problem data */
    305 SCIP_LP* lp, /**< LP data */
    306 int itlim, /**< iteration limit for strong branchings */
    307 SCIP_Real* down, /**< stores dual bounds after branching columns down */
    308 SCIP_Real* up, /**< stores dual bounds after branching columns up */
    309 SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds, or NULL;
    310 * otherwise, they can only be used as an estimate value */
    311 SCIP_Bool* upvalid, /**< stores whether the returned up values are valid dual bounds, or NULL;
    312 * otherwise, they can only be used as an estimate value */
    313 SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred */
    314 );
    315
    316/** gets last strong branching information available for a column variable;
    317 * returns values of SCIP_INVALID, if strong branching was not yet called on the given column;
    318 * keep in mind, that the returned old values may have nothing to do with the current LP solution
    319 */
    321 SCIP_COL* col, /**< LP column */
    322 SCIP_Real* down, /**< stores dual bound after branching column down, or NULL */
    323 SCIP_Real* up, /**< stores dual bound after branching column up, or NULL */
    324 SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound, or NULL;
    325 * otherwise, it can only be used as an estimate value */
    326 SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound, or NULL;
    327 * otherwise, it can only be used as an estimate value */
    328 SCIP_Real* solval, /**< stores LP solution value of column at last strong branching call, or NULL */
    329 SCIP_Real* lpobjval /**< stores LP objective value at last strong branching call, or NULL */
    330 );
    331
    332/** if strong branching was already applied on the column at the current node, returns the number of LPs solved after
    333 * the LP where the strong branching on this column was applied;
    334 * if strong branching was not yet applied on the column at the current node, returns INT_MAX
    335 */
    337 SCIP_COL* col, /**< LP column */
    338 SCIP_STAT* stat /**< dynamic problem statistics */
    339 );
    340
    341/** marks a column to be not removable from the LP in the current node because it became obsolete */
    343 SCIP_COL* col, /**< LP column */
    344 SCIP_STAT* stat /**< problem statistics */
    345 );
    346
    347
    348/*
    349 * Row methods
    350 */
    351
    352/** creates and captures an LP row */
    354 SCIP_ROW** row, /**< pointer to LP row data */
    355 BMS_BLKMEM* blkmem, /**< block memory */
    356 SCIP_SET* set, /**< global SCIP settings */
    357 SCIP_STAT* stat, /**< problem statistics */
    358 const char* name, /**< name of row */
    359 int len, /**< number of nonzeros in the row */
    360 SCIP_COL** cols, /**< array with columns of row entries */
    361 SCIP_Real* vals, /**< array with coefficients of row entries */
    362 SCIP_Real lhs, /**< left hand side of row */
    363 SCIP_Real rhs, /**< right hand side of row */
    364 SCIP_ROWORIGINTYPE origintype, /**< type of origin of row */
    365 void* origin, /**< pointer to constraint handler or separator who created the row (NULL if unkown) */
    366 SCIP_Bool local, /**< is row only valid locally? */
    367 SCIP_Bool modifiable, /**< is row modifiable during node processing (subject to column generation)? */
    368 SCIP_Bool removable /**< should the row be removed from the LP due to aging or cleanup? */
    369 );
    370
    371/** frees an LP row */
    373 SCIP_ROW** row, /**< pointer to LP row */
    374 BMS_BLKMEM* blkmem, /**< block memory */
    375 SCIP_SET* set, /**< global SCIP settings */
    376 SCIP_LP* lp /**< current LP data */
    377 );
    378
    379/** output row to file stream */
    380void SCIProwPrint(
    381 SCIP_ROW* row, /**< LP row */
    382 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    383 FILE* file /**< output file (or NULL for standard output) */
    384 );
    385
    386/** ensures, that column array of row can store at least num entries */
    388 SCIP_ROW* row, /**< LP row */
    389 BMS_BLKMEM* blkmem, /**< block memory */
    390 SCIP_SET* set, /**< global SCIP settings */
    391 int num /**< minimum number of entries to store */
    392 );
    393
    394/** increases usage counter of LP row */
    395void SCIProwCapture(
    396 SCIP_ROW* row /**< LP row */
    397 );
    398
    399/** decreases usage counter of LP row, and frees memory if necessary */
    401 SCIP_ROW** row, /**< pointer to LP row */
    402 BMS_BLKMEM* blkmem, /**< block memory */
    403 SCIP_SET* set, /**< global SCIP settings */
    404 SCIP_LP* lp /**< current LP data */
    405 );
    406
    407/** enables delaying of row sorting */
    409 SCIP_ROW* row /**< LP row */
    410 );
    411
    412/** disables delaying of row sorting, sorts row and merges coefficients with equal columns */
    414 SCIP_ROW* row, /**< LP row */
    415 SCIP_SET* set /**< global SCIP settings */
    416 );
    417
    418/** adds a previously non existing coefficient to an LP row */
    420 SCIP_ROW* row, /**< LP row */
    421 BMS_BLKMEM* blkmem, /**< block memory */
    422 SCIP_SET* set, /**< global SCIP settings */
    423 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    424 SCIP_LP* lp, /**< current LP data */
    425 SCIP_COL* col, /**< LP column */
    426 SCIP_Real val /**< value of coefficient */
    427 );
    428
    429/** deletes coefficient from row */
    431 SCIP_ROW* row, /**< LP row */
    432 BMS_BLKMEM* blkmem, /**< block memory */
    433 SCIP_SET* set, /**< global SCIP settings */
    434 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    435 SCIP_LP* lp, /**< current LP data */
    436 SCIP_COL* col /**< coefficient to be deleted */
    437 );
    438
    439/** changes or adds a coefficient to an LP row */
    441 SCIP_ROW* row, /**< LP row */
    442 BMS_BLKMEM* blkmem, /**< block memory */
    443 SCIP_SET* set, /**< global SCIP settings */
    444 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    445 SCIP_LP* lp, /**< current LP data */
    446 SCIP_COL* col, /**< LP column */
    447 SCIP_Real val /**< value of coefficient */
    448 );
    449
    450/** increases value of an existing or nonexisting coefficient in an LP column */
    452 SCIP_ROW* row, /**< LP row */
    453 BMS_BLKMEM* blkmem, /**< block memory */
    454 SCIP_SET* set, /**< global SCIP settings */
    455 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    456 SCIP_LP* lp, /**< current LP data */
    457 SCIP_COL* col, /**< LP column */
    458 SCIP_Real incval /**< value to add to the coefficient */
    459 );
    460
    461/** changes constant value of a row */
    463 SCIP_ROW* row, /**< LP row */
    464 BMS_BLKMEM* blkmem, /**< block memory */
    465 SCIP_SET* set, /**< global SCIP settings */
    466 SCIP_STAT* stat, /**< problem statistics */
    467 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    468 SCIP_LP* lp, /**< current LP data */
    469 SCIP_Real constant /**< new constant value */
    470 );
    471
    472/** add constant value to a row */
    474 SCIP_ROW* row, /**< LP row */
    475 BMS_BLKMEM* blkmem, /**< block memory */
    476 SCIP_SET* set, /**< global SCIP settings */
    477 SCIP_STAT* stat, /**< problem statistics */
    478 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    479 SCIP_LP* lp, /**< current LP data */
    480 SCIP_Real addval /**< constant value to add to the row */
    481 );
    482
    483/** changes left hand side of LP row */
    485 SCIP_ROW* row, /**< LP row */
    486 BMS_BLKMEM* blkmem, /**< block memory */
    487 SCIP_SET* set, /**< global SCIP settings */
    488 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    489 SCIP_LP* lp, /**< current LP data */
    490 SCIP_Real lhs /**< new left hand side */
    491 );
    492
    493/** changes right hand side of LP row */
    495 SCIP_ROW* row, /**< LP row */
    496 BMS_BLKMEM* blkmem, /**< block memory */
    497 SCIP_SET* set, /**< global SCIP settings */
    498 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    499 SCIP_LP* lp, /**< current LP data */
    500 SCIP_Real rhs /**< new right hand side */
    501 );
    502
    503/** changes the local flag of LP row */
    505 SCIP_ROW* row, /**< LP row */
    506 SCIP_Bool local /**< new value for local flag */
    507 );
    508
    509/** tries to find a value, such that all row coefficients, if scaled with this value become integral */
    511 SCIP_ROW* row, /**< LP row */
    512 SCIP_SET* set, /**< global SCIP settings */
    513 SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
    514 SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
    515 SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
    516 SCIP_Real maxscale, /**< maximal allowed scalar */
    517 SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
    518 SCIP_Real* intscalar, /**< pointer to store scalar that would make the coefficients integral */
    519 SCIP_Bool* success /**< stores whether returned value is valid */
    520 );
    521
    522/** tries to scale row, s.t. all coefficients become integral */
    524 SCIP_ROW* row, /**< LP row */
    525 BMS_BLKMEM* blkmem, /**< block memory */
    526 SCIP_SET* set, /**< global SCIP settings */
    527 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    528 SCIP_STAT* stat, /**< problem statistics */
    529 SCIP_LP* lp, /**< current LP data */
    530 SCIP_Real mindelta, /**< minimal relative allowed difference of scaled coefficient s*c and integral i */
    531 SCIP_Real maxdelta, /**< maximal relative allowed difference of scaled coefficient s*c and integral i */
    532 SCIP_Longint maxdnom, /**< maximal denominator allowed in rational numbers */
    533 SCIP_Real maxscale, /**< maximal value to scale row with */
    534 SCIP_Bool usecontvars, /**< should the coefficients of the continuous variables also be made integral? */
    535 SCIP_Bool* success /**< stores whether row could be made rational */
    536 );
    537
    538/** recalculates norms of a row */
    540 SCIP_ROW* row, /**< LP row */
    541 SCIP_SET* set /**< global SCIP settings */
    542 );
    543
    544/** recalculates the current activity of a row */
    546 SCIP_ROW* row, /**< LP row */
    547 SCIP_STAT* stat /**< problem statistics */
    548 );
    549
    550/** returns the activity of a row in the current LP solution */
    552 SCIP_ROW* row, /**< LP row */
    553 SCIP_SET* set, /**< global SCIP settings */
    554 SCIP_STAT* stat, /**< problem statistics */
    555 SCIP_LP* lp /**< current LP data */
    556 );
    557
    558/** returns the feasibility of a row in the current LP solution: negative value means infeasibility */
    560 SCIP_ROW* row, /**< LP row */
    561 SCIP_SET* set, /**< global SCIP settings */
    562 SCIP_STAT* stat, /**< problem statistics */
    563 SCIP_LP* lp /**< current LP data */
    564 );
    565
    566/** returns the feasibility of a row in the current relaxed solution: negative value means infeasibility */
    568 SCIP_ROW* row, /**< LP row */
    569 SCIP_SET* set, /**< global SCIP settings */
    570 SCIP_STAT* stat /**< problem statistics */
    571 );
    572
    573/** returns the feasibility of a row in the current NLP solution: negative value means infeasibility */
    575 SCIP_ROW* row, /**< LP row */
    576 SCIP_SET* set, /**< global SCIP settings */
    577 SCIP_STAT* stat /**< problem statistics */
    578 );
    579
    580/** calculates the current pseudo activity of a row */
    582 SCIP_ROW* row, /**< row data */
    583 SCIP_STAT* stat /**< problem statistics */
    584 );
    585
    586/** returns the pseudo activity of a row in the current pseudo solution */
    588 SCIP_ROW* row, /**< LP row */
    589 SCIP_SET* set, /**< global SCIP settings */
    590 SCIP_STAT* stat /**< problem statistics */
    591 );
    592
    593/** returns the pseudo feasibility of a row in the current pseudo solution: negative value means infeasibility */
    595 SCIP_ROW* row, /**< LP row */
    596 SCIP_SET* set, /**< global SCIP settings */
    597 SCIP_STAT* stat /**< problem statistics */
    598 );
    599
    600/** returns the activity of a row for a given solution */
    602 SCIP_ROW* row, /**< LP row */
    603 SCIP_SET* set, /**< global SCIP settings */
    604 SCIP_STAT* stat, /**< problem statistics data */
    605 SCIP_SOL* sol /**< primal CIP solution */
    606 );
    607
    608/** returns the feasibility of a row for the given solution */
    610 SCIP_ROW* row, /**< LP row */
    611 SCIP_SET* set, /**< global SCIP settings */
    612 SCIP_STAT* stat, /**< problem statistics data */
    613 SCIP_SOL* sol /**< primal CIP solution */
    614 );
    615
    616/** returns the minimal activity of a row w.r.t. the columns' bounds */
    618 SCIP_ROW* row, /**< LP row */
    619 SCIP_SET* set, /**< global SCIP settings */
    620 SCIP_STAT* stat /**< problem statistics data */
    621 );
    622
    623/** returns the maximal activity of a row w.r.t. the columns' bounds */
    625 SCIP_ROW* row, /**< LP row */
    626 SCIP_SET* set, /**< global SCIP settings */
    627 SCIP_STAT* stat /**< problem statistics data */
    628 );
    629
    630/** returns whether the row is unmodifiable and redundant w.r.t. the columns' bounds */
    632 SCIP_ROW* row, /**< LP row */
    633 SCIP_SET* set, /**< global SCIP settings */
    634 SCIP_STAT* stat /**< problem statistics data */
    635 );
    636
    637/** gets maximal absolute value of row vector coefficients */
    639 SCIP_ROW* row, /**< LP row */
    640 SCIP_SET* set /**< global SCIP settings */
    641 );
    642
    643/** gets minimal absolute value of row vector's non-zero coefficients */
    645 SCIP_ROW* row, /**< LP row */
    646 SCIP_SET* set /**< global SCIP settings */
    647 );
    648
    649/** gets maximal column index of row entries */
    651 SCIP_ROW* row, /**< LP row */
    652 SCIP_SET* set /**< global SCIP settings */
    653 );
    654
    655/** gets minimal column index of row entries */
    657 SCIP_ROW* row, /**< LP row */
    658 SCIP_SET* set /**< global SCIP settings */
    659 );
    660
    661/** gets number of integral columns in row */
    663 SCIP_ROW* row, /**< LP row */
    664 SCIP_SET* set /**< global SCIP settings */
    665 );
    666
    667/** gets number of implied integral columns in row */
    669 SCIP_ROW* row, /**< LP row */
    670 SCIP_SET* set /**< global SCIP settings */
    671 );
    672
    673/** returns row's cutoff distance in the direction of the given primal solution */
    675 SCIP_ROW* row, /**< LP row */
    676 SCIP_SET* set, /**< global SCIP settings */
    677 SCIP_STAT* stat, /**< problem statistics data */
    678 SCIP_SOL* sol, /**< solution to compute direction for cutoff distance; must not be NULL */
    679 SCIP_LP* lp /**< current LP data */
    680 );
    681
    682/** returns row's efficacy with respect to the current LP solution: e = -feasibility/norm */
    684 SCIP_ROW* row, /**< LP row */
    685 SCIP_SET* set, /**< global SCIP settings */
    686 SCIP_STAT* stat, /**< problem statistics data */
    687 SCIP_LP* lp /**< current LP data */
    688 );
    689
    690/** returns whether the row's efficacy with respect to the current LP solution is greater than the minimal cut efficacy */
    692 SCIP_ROW* row, /**< LP row */
    693 SCIP_SET* set, /**< global SCIP settings */
    694 SCIP_STAT* stat, /**< problem statistics data */
    695 SCIP_LP* lp, /**< current LP data */
    696 SCIP_Bool root /**< should the root's minimal cut efficacy be used? */
    697 );
    698
    699/** returns row's efficacy with respect to the given primal solution: e = -feasibility/norm */
    701 SCIP_ROW* row, /**< LP row */
    702 SCIP_SET* set, /**< global SCIP settings */
    703 SCIP_STAT* stat, /**< problem statistics data */
    704 SCIP_SOL* sol /**< primal CIP solution */
    705 );
    706
    707/** returns whether the row's efficacy with respect to the given primal solution is greater than the minimal cut
    708 * efficacy
    709 */
    711 SCIP_ROW* row, /**< LP row */
    712 SCIP_SET* set, /**< global SCIP settings */
    713 SCIP_STAT* stat, /**< problem statistics data */
    714 SCIP_SOL* sol, /**< primal CIP solution */
    715 SCIP_Bool root /**< should the root's minimal cut efficacy be used? */
    716 );
    717
    718/** returns row's efficacy with respect to the relaxed solution: e = -feasibility/norm */
    720 SCIP_ROW* row, /**< LP row */
    721 SCIP_SET* set, /**< global SCIP settings */
    722 SCIP_STAT* stat /**< problem statistics data */
    723 );
    724
    725/** returns row's efficacy with respect to the NLP solution: e = -feasibility/norm */
    727 SCIP_ROW* row, /**< LP row */
    728 SCIP_SET* set, /**< global SCIP settings */
    729 SCIP_STAT* stat /**< problem statistics data */
    730 );
    731
    732/** gets parallelism of row with objective function: if the returned value is 1, the row is parallel to the objective
    733 * function, if the value is 0, it is orthogonal to the objective function
    734 */
    736 SCIP_ROW* row, /**< LP row */
    737 SCIP_SET* set, /**< global SCIP settings */
    738 SCIP_LP* lp /**< current LP data */
    739 );
    740
    741/** includes event handler with given data in row's event filter */
    743 SCIP_ROW* row, /**< row */
    744 BMS_BLKMEM* blkmem, /**< block memory */
    745 SCIP_SET* set, /**< global SCIP settings */
    746 SCIP_EVENTTYPE eventtype, /**< event type to catch */
    747 SCIP_EVENTHDLR* eventhdlr, /**< event handler to call for the event processing */
    748 SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler for the event processing */
    749 int* filterpos /**< pointer to store position of event filter entry, or NULL */
    750 );
    751
    752/** deletes event handler with given data from row's event filter */
    754 SCIP_ROW* row, /**< row */
    755 BMS_BLKMEM* blkmem, /**< block memory */
    756 SCIP_SET* set, /**< global SCIP settings */
    757 SCIP_EVENTTYPE eventtype, /**< event type mask of dropped event */
    758 SCIP_EVENTHDLR* eventhdlr, /**< event handler to call for the event processing */
    759 SCIP_EVENTDATA* eventdata, /**< event data to pass to the event handler for the event processing */
    760 int filterpos /**< position of event filter entry returned by SCIPvarCatchEvent(), or -1 */
    761 );
    762
    763/** marks a row to be not removable from the LP in the current node */
    765 SCIP_ROW* row, /**< LP row */
    766 SCIP_STAT* stat /**< problem statistics */
    767 );
    768
    769
    770/*
    771 * LP methods
    772 */
    773
    774/** creates empty LP data object */
    776 SCIP_LP** lp, /**< pointer to LP data object */
    777 SCIP_SET* set, /**< global SCIP settings */
    778 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    779 SCIP_STAT* stat, /**< problem statistics */
    780 const char* name /**< problem name */
    781 );
    782
    783/** frees LP data object */
    785 SCIP_LP** lp, /**< pointer to LP data object */
    786 BMS_BLKMEM* blkmem, /**< block memory */
    787 SCIP_SET* set, /**< global SCIP settings */
    788 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    789 SCIP_EVENTFILTER* eventfilter /**< global event filter */
    790 );
    791
    792/** resets the LP to the empty LP by removing all columns and rows from LP, releasing all rows, and flushing the
    793 * changes to the LP solver
    794 */
    796 SCIP_LP* lp, /**< LP data */
    797 BMS_BLKMEM* blkmem, /**< block memory */
    798 SCIP_SET* set, /**< global SCIP settings */
    799 SCIP_PROB* prob, /**< problem data */
    800 SCIP_STAT* stat, /**< problem statistics */
    801 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    802 SCIP_EVENTFILTER* eventfilter /**< global event filter */
    803 );
    804
    805/** adds a column to the LP and captures the variable */
    807 SCIP_LP* lp, /**< LP data */
    808 SCIP_SET* set, /**< global SCIP settings */
    809 SCIP_COL* col, /**< LP column */
    810 int depth /**< depth in the tree where the column addition is performed */
    811 );
    812
    813/** adds a row to the LP and captures it */
    815 SCIP_LP* lp, /**< LP data */
    816 BMS_BLKMEM* blkmem, /**< block memory buffers */
    817 SCIP_SET* set, /**< global SCIP settings */
    818 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    819 SCIP_EVENTFILTER* eventfilter, /**< global event filter */
    820 SCIP_ROW* row, /**< LP row */
    821 int depth /**< depth in the tree where the row addition is performed */
    822 );
    823
    824/** removes all columns after the given number of columns from the LP */
    826 SCIP_LP* lp, /**< LP data */
    827 SCIP_SET* set, /**< global SCIP settings */
    828 int newncols /**< new number of columns in the LP */
    829 );
    830
    831/** removes and releases all rows after the given number of rows from the LP */
    833 SCIP_LP* lp, /**< LP data */
    834 BMS_BLKMEM* blkmem, /**< block memory */
    835 SCIP_SET* set, /**< global SCIP settings */
    836 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    837 SCIP_EVENTFILTER* eventfilter, /**< global event filter */
    838 int newnrows /**< new number of rows in the LP */
    839 );
    840
    841/** removes all columns and rows from LP, releases all rows */
    843 SCIP_LP* lp, /**< LP data */
    844 BMS_BLKMEM* blkmem, /**< block memory */
    845 SCIP_SET* set, /**< global SCIP settings */
    846 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    847 SCIP_EVENTFILTER* eventfilter /**< global event filter */
    848 );
    849
    850/** remembers number of columns and rows to track the newly added ones */
    851void SCIPlpMarkSize(
    852 SCIP_LP* lp /**< current LP data */
    853 );
    854
    855/** sets the remembered number of columns and rows to the given values */
    857 SCIP_LP* lp, /**< current LP data */
    858 int nrows, /**< number of rows to set the size marker to */
    859 int ncols /**< number of columns to set the size marker to */
    860 );
    861
    862/** gets all indices of basic columns and rows: index i >= 0 corresponds to column i, index i < 0 to row -i-1 */
    864 SCIP_LP* lp, /**< LP data */
    865 int* basisind /**< pointer to store basis indices ready to keep number of rows entries */
    866 );
    867
    868/** gets current basis status for columns and rows; arrays must be large enough to store the basis status */
    870 SCIP_LP* lp, /**< LP data */
    871 int* cstat, /**< array to store column basis status, or NULL */
    872 int* rstat /**< array to store row basis status, or NULL */
    873 );
    874
    875/** gets a row from the inverse basis matrix B^-1 */
    877 SCIP_LP* lp, /**< LP data */
    878 int r, /**< row number */
    879 SCIP_Real* coef, /**< pointer to store the coefficients of the row */
    880 int* inds, /**< array to store the non-zero indices, or NULL */
    881 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    882 * (-1: if we do not store sparsity informations) */
    883 );
    884
    885/** gets a column from the inverse basis matrix B^-1 */
    887 SCIP_LP* lp, /**< LP data */
    888 int c, /**< column number of B^-1; this is NOT the number of the column in the LP
    889 * returned by SCIPcolGetLPPos(); you have to call SCIPgetBasisInd()
    890 * to get the array which links the B^-1 column numbers to the row and
    891 * column numbers of the LP! c must be between 0 and nrows-1, since the
    892 * basis has the size nrows * nrows */
    893 SCIP_Real* coef, /**< pointer to store the coefficients of the column */
    894 int* inds, /**< array to store the non-zero indices, or NULL */
    895 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    896 * (-1: if we do not store sparsity informations) */
    897 );
    898
    899/** gets a row from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A) */
    901 SCIP_LP* lp, /**< LP data */
    902 int r, /**< row number */
    903 SCIP_Real* binvrow, /**< row in B^-1 from prior call to SCIPlpGetBInvRow(), or NULL */
    904 SCIP_Real* coef, /**< pointer to store the coefficients of the row */
    905 int* inds, /**< array to store the non-zero indices, or NULL */
    906 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    907 * (-1: if we do not store sparsity informations) */
    908 );
    909
    910/** gets a column from the product of inverse basis matrix B^-1 and coefficient matrix A (i.e. from B^-1 * A),
    911 * i.e., it computes B^-1 * A_c with A_c being the c'th column of A
    912 */
    914 SCIP_LP* lp, /**< LP data */
    915 int c, /**< column number which can be accessed by SCIPcolGetLPPos() */
    916 SCIP_Real* coef, /**< pointer to store the coefficients of the column */
    917 int* inds, /**< array to store the non-zero indices, or NULL */
    918 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    919 * (-1: if we do not store sparsity informations) */
    920 );
    921
    922/** calculates a weighted sum of all LP rows; for negative weights, the left and right hand side of the corresponding
    923 * LP row are swapped in the summation
    924 */
    926 SCIP_LP* lp, /**< LP data */
    927 SCIP_SET* set, /**< global SCIP settings */
    928 SCIP_PROB* prob, /**< problem data */
    929 SCIP_Real* weights, /**< row weights in row summation */
    930 SCIP_REALARRAY* sumcoef, /**< array to store sum coefficients indexed by variables' probindex */
    931 SCIP_Real* sumlhs, /**< pointer to store the left hand side of the row summation */
    932 SCIP_Real* sumrhs /**< pointer to store the right hand side of the row summation */
    933 );
    934
    935/** stores LP state (like basis information) into LP state object */
    937 SCIP_LP* lp, /**< LP data */
    938 BMS_BLKMEM* blkmem, /**< block memory */
    939 SCIP_LPISTATE** lpistate /**< pointer to LP state information (like basis information) */
    940 );
    941
    942/** loads LP state (like basis information) into solver */
    944 SCIP_LP* lp, /**< LP data */
    945 BMS_BLKMEM* blkmem, /**< block memory */
    946 SCIP_SET* set, /**< global SCIP settings */
    947 SCIP_PROB* prob, /**< problem data */
    948 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    949 SCIP_LPISTATE* lpistate, /**< LP state information (like basis information) */
    950 SCIP_Bool wasprimfeas, /**< primal feasibility when LP state information was stored */
    951 SCIP_Bool wasprimchecked, /**< true if the LP solution has passed the primal feasibility check */
    952 SCIP_Bool wasdualfeas, /**< dual feasibility when LP state information was stored */
    953 SCIP_Bool wasdualchecked /**< true if the LP solution has passed the dual feasibility check */
    954 );
    955
    956/** frees LP state information */
    958 SCIP_LP* lp, /**< LP data */
    959 BMS_BLKMEM* blkmem, /**< block memory */
    960 SCIP_LPISTATE** lpistate /**< pointer to LP state information (like basis information) */
    961 );
    962
    963/** interrupts the currently ongoing lp solve or disables the interrupt */
    965 SCIP_LP* lp, /**< LP data */
    966 SCIP_Bool interrupt /**< TRUE if interrupt should be set, FALSE if it should be disabled */
    967 );
    968
    969/** stores pricing norms into LP norms object */
    971 SCIP_LP* lp, /**< LP data */
    972 BMS_BLKMEM* blkmem, /**< block memory */
    973 SCIP_LPINORMS** lpinorms /**< pointer to LP pricing norms information */
    974 );
    975
    976/** loads pricing norms from LP norms object into solver */
    978 SCIP_LP* lp, /**< LP data */
    979 BMS_BLKMEM* blkmem, /**< block memory */
    980 SCIP_LPINORMS* lpinorms /**< LP pricing norms information */
    981 );
    982
    983/** frees pricing norms information */
    985 SCIP_LP* lp, /**< LP data */
    986 BMS_BLKMEM* blkmem, /**< block memory */
    987 SCIP_LPINORMS** lpinorms /**< pointer to LP pricing norms information */
    988 );
    989
    990/** return the current cutoff bound of the lp */
    992 SCIP_LP* lp /**< current LP data */
    993 );
    994
    995/** sets the upper objective limit of the LP solver */
    997 SCIP_LP* lp, /**< current LP data */
    998 SCIP_SET* set, /**< global SCIP settings */
    999 SCIP_PROB* prob, /**< problem data */
    1000 SCIP_Real cutoffbound /**< new upper objective limit */
    1001 );
    1002
    1003/** gets current primal feasibility tolerance of LP solver */
    1005 SCIP_LP* lp /**< current LP data */
    1006 );
    1007
    1008/** sets primal feasibility tolerance of LP solver */
    1009void SCIPlpSetFeastol(
    1010 SCIP_LP* lp, /**< current LP data */
    1011 SCIP_SET* set, /**< global SCIP settings */
    1012 SCIP_Real newfeastol /**< new primal feasibility tolerance for LP */
    1013 );
    1014
    1015/** resets primal feasibility tolerance of LP solver
    1016 *
    1017 * Sets primal feasibility tolerance to min of numerics/lpfeastolfactor * numerics/feastol and relaxfeastol.
    1018 */
    1020 SCIP_LP* lp, /**< current LP data */
    1021 SCIP_SET* set /**< global SCIP settings */
    1022 );
    1023
    1024/** applies all cached changes to the LP solver */
    1026 SCIP_LP* lp, /**< current LP data */
    1027 BMS_BLKMEM* blkmem, /**< block memory */
    1028 SCIP_SET* set, /**< global SCIP settings */
    1029 SCIP_PROB* prob, /**< problem data */
    1030 SCIP_EVENTQUEUE* eventqueue /**< event queue */
    1031 );
    1032
    1033/** marks the LP to be flushed, even if the LP thinks it is not flushed */
    1035 SCIP_LP* lp, /**< current LP data */
    1036 SCIP_SET* set /**< global SCIP settings */
    1037 );
    1038
    1039/** solves the LP with simplex algorithm, and copy the solution into the column's data */
    1041 SCIP_LP* lp, /**< LP data */
    1042 SCIP_SET* set, /**< global SCIP settings */
    1043 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    1044 BMS_BLKMEM* blkmem, /**< block memory buffers */
    1045 SCIP_STAT* stat, /**< problem statistics */
    1046 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    1047 SCIP_EVENTFILTER* eventfilter, /**< global event filter */
    1048 SCIP_PROB* prob, /**< problem data */
    1049 SCIP_Longint itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
    1050 SCIP_Bool limitresolveiters, /**< should LP iterations for resolving calls be limited?
    1051 * (limit is computed within the method w.r.t. the average LP iterations) */
    1052 SCIP_Bool aging, /**< should aging and removal of obsolete cols/rows be applied? */
    1053 SCIP_Bool keepsol, /**< should the old LP solution be kept if no iterations were performed? */
    1054 SCIP_Bool forcedlpsolve, /**< would SCIP abort if the LP is not solved? */
    1055 SCIP_Bool* lperror /**< pointer to store whether an unresolved LP error occurred */
    1056 );
    1057
    1058/** gets solution status of current LP */
    1060 SCIP_LP* lp /**< current LP data */
    1061 );
    1062
    1063/** sets whether the root LP is a relaxation of the problem and its optimal objective value is a global lower bound */
    1065 SCIP_LP* lp, /**< LP data */
    1066 SCIP_Bool isrelax /**< is the root lp a relaxation of the problem? */
    1067 );
    1068
    1069/** returns whether the root lp is a relaxation of the problem and its optimal objective value is a global lower bound */
    1071 SCIP_LP* lp /**< LP data */
    1072 );
    1073
    1074/** gets objective value of current LP
    1075 *
    1076 * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
    1077 * if a limit was hit during solving. It must not be used as a dual bound if the LP solution status is
    1078 * SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
    1079 */
    1081 SCIP_LP* lp, /**< current LP data */
    1082 SCIP_SET* set, /**< global SCIP settings */
    1083 SCIP_PROB* prob /**< problem data */
    1084 );
    1085
    1086/** gets part of objective value of current LP that results from COLUMN variables only */
    1088 SCIP_LP* lp /**< current LP data */
    1089 );
    1090
    1091/** gets part of objective value of current LP that results from LOOSE variables only */
    1093 SCIP_LP* lp, /**< current LP data */
    1094 SCIP_SET* set, /**< global SCIP settings */
    1095 SCIP_PROB* prob /**< problem data */
    1096 );
    1097
    1098/** remembers the current LP objective value as root solution value */
    1100 SCIP_LP* lp, /**< current LP data */
    1101 SCIP_SET* set, /**< global SCIP settings */
    1102 SCIP_PROB* prob /**< problem data */
    1103 );
    1104
    1105/** invalidates the root LP solution value */
    1107 SCIP_LP* lp /**< current LP data */
    1108 );
    1109
    1110/** gets the global pseudo objective value; that is all variables set to their best (w.r.t. the objective function)
    1111 * global bound
    1112 */
    1114 SCIP_LP* lp, /**< current LP data */
    1115 SCIP_SET* set, /**< global SCIP settings */
    1116 SCIP_PROB* prob /**< problem data */
    1117 );
    1118
    1119/** recomputes local and global pseudo objective values */
    1121 SCIP_LP* lp, /**< current LP data */
    1122 SCIP_SET* set, /**< global SCIP settings */
    1123 SCIP_PROB* prob /**< problem data */
    1124 );
    1125
    1126/** gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
    1127 * objective function) local bound
    1128 */
    1130 SCIP_LP* lp, /**< current LP data */
    1131 SCIP_SET* set, /**< global SCIP settings */
    1132 SCIP_PROB* prob /**< problem data */
    1133 );
    1134
    1135/** gets pseudo objective value, if a bound of the given variable would be modified in the given way */
    1137 SCIP_LP* lp, /**< current LP data */
    1138 SCIP_SET* set, /**< global SCIP settings */
    1139 SCIP_PROB* prob, /**< problem data */
    1140 SCIP_VAR* var, /**< problem variable */
    1141 SCIP_Real oldbound, /**< old value for bound */
    1142 SCIP_Real newbound, /**< new value for bound */
    1143 SCIP_BOUNDTYPE boundtype /**< type of bound: lower or upper bound */
    1144 );
    1145
    1146/** updates current pseudo and loose objective value for a change in a variable's objective coefficient */
    1148 SCIP_LP* lp, /**< current LP data */
    1149 SCIP_SET* set, /**< global SCIP settings */
    1150 SCIP_VAR* var, /**< problem variable that changed */
    1151 SCIP_Real oldobj, /**< old objective coefficient of variable */
    1152 SCIP_Real newobj /**< new objective coefficient of variable */
    1153 );
    1154
    1155/** updates current root pseudo objective value for a global change in a variable's lower bound */
    1157 SCIP_LP* lp, /**< current LP data */
    1158 SCIP_SET* set, /**< global SCIP settings */
    1159 SCIP_VAR* var, /**< problem variable that changed */
    1160 SCIP_Real oldlb, /**< old lower bound of variable */
    1161 SCIP_Real newlb /**< new lower bound of variable */
    1162 );
    1163
    1164/** updates current pseudo and loose objective value for a change in a variable's lower bound */
    1166 SCIP_LP* lp, /**< current LP data */
    1167 SCIP_SET* set, /**< global SCIP settings */
    1168 SCIP_VAR* var, /**< problem variable that changed */
    1169 SCIP_Real oldlb, /**< old lower bound of variable */
    1170 SCIP_Real newlb /**< new lower bound of variable */
    1171 );
    1172
    1173/** updates current root pseudo objective value for a global change in a variable's upper bound */
    1175 SCIP_LP* lp, /**< current LP data */
    1176 SCIP_SET* set, /**< global SCIP settings */
    1177 SCIP_VAR* var, /**< problem variable that changed */
    1178 SCIP_Real oldub, /**< old upper bound of variable */
    1179 SCIP_Real newub /**< new upper bound of variable */
    1180 );
    1181
    1182/** updates current pseudo objective value for a change in a variable's upper bound */
    1184 SCIP_LP* lp, /**< current LP data */
    1185 SCIP_SET* set, /**< global SCIP settings */
    1186 SCIP_VAR* var, /**< problem variable that changed */
    1187 SCIP_Real oldub, /**< old upper bound of variable */
    1188 SCIP_Real newub /**< new upper bound of variable */
    1189 );
    1190
    1191/** informs LP, that given variable was added to the problem */
    1193 SCIP_LP* lp, /**< current LP data */
    1194 SCIP_SET* set, /**< global SCIP settings */
    1195 SCIP_VAR* var /**< variable that is now a LOOSE problem variable */
    1196 );
    1197
    1198/** informs LP, that given variable is to be deleted from the problem */
    1200 SCIP_LP* lp, /**< current LP data */
    1201 SCIP_SET* set, /**< global SCIP settings */
    1202 SCIP_VAR* var /**< variable that will be deleted from the problem */
    1203 );
    1204
    1205/** informs LP, that given formerly loose problem variable is now a column variable */
    1207 SCIP_LP* lp, /**< current LP data */
    1208 SCIP_SET* set, /**< global SCIP settings */
    1209 SCIP_VAR* var /**< problem variable that changed from LOOSE to COLUMN */
    1210 );
    1211
    1212/** informs LP, that given formerly column problem variable is now again a loose variable */
    1214 SCIP_LP* lp, /**< current LP data */
    1215 SCIP_SET* set, /**< global SCIP settings */
    1216 SCIP_VAR* var /**< problem variable that changed from COLUMN to LOOSE */
    1217 );
    1218
    1219/** decrease the number of loose variables by one */
    1221 SCIP_LP* lp /**< current LP data */
    1222 );
    1223
    1224/** stores the LP solution in the columns and rows */
    1226 SCIP_LP* lp, /**< current LP data */
    1227 SCIP_SET* set, /**< global SCIP settings */
    1228 SCIP_STAT* stat, /**< problem statistics */
    1229 SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
    1230 SCIP_Bool* dualfeasible /**< pointer to store whether the solution is dual feasible, or NULL */
    1231 );
    1232
    1233/** stores LP solution with infinite objective value in the columns and rows */
    1235 SCIP_LP* lp, /**< current LP data */
    1236 SCIP_SET* set, /**< global SCIP settings */
    1237 SCIP_STAT* stat, /**< problem statistics */
    1238 SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
    1239 SCIP_Bool* rayfeasible /**< pointer to store whether the primal ray is a feasible unboundedness proof, or NULL */
    1240 );
    1241
    1242/** returns primal ray proving the unboundedness of the current LP */
    1244 SCIP_LP* lp, /**< current LP data */
    1245 SCIP_SET* set, /**< global SCIP settings */
    1246 SCIP_Real* ray /**< array for storing primal ray values, they are stored w.r.t. the problem index of the variables,
    1247 * so the size of this array should be at least number of active variables
    1248 * (all entries have to be initialized to 0 before) */
    1249 );
    1250
    1251/** stores the dual Farkas multipliers for infeasibility proof in rows. besides, the proof is checked for validity if
    1252 * lp/checkfarkas = TRUE.
    1253 *
    1254 * @note the check will not be performed if @p valid is NULL.
    1255 */
    1257 SCIP_LP* lp, /**< current LP data */
    1258 SCIP_SET* set, /**< global SCIP settings */
    1259 SCIP_STAT* stat, /**< problem statistics */
    1260 SCIP_Bool forcedlpsolve, /**< would SCIP abort if the LP is not solved? */
    1261 SCIP_Bool* valid /**< pointer to store whether the Farkas proof is valid or NULL */
    1262 );
    1263
    1264/** get number of iterations used in last LP solve */
    1266 SCIP_LP* lp, /**< current LP data */
    1267 int* iterations /**< pointer to store the iteration count */
    1268 );
    1269
    1270/** increases age of columns with solution value 0.0 and rows with activity not at its bounds,
    1271 * resets age of non-zero columns and sharp rows
    1272 */
    1274 SCIP_LP* lp, /**< current LP data */
    1275 SCIP_STAT* stat /**< problem statistics */
    1276 );
    1277
    1278/** removes all non-basic columns and basic rows in the part of the LP created at the current node, that are too old */
    1280 SCIP_LP* lp, /**< current LP data */
    1281 BMS_BLKMEM* blkmem, /**< block memory buffers */
    1282 SCIP_SET* set, /**< global SCIP settings */
    1283 SCIP_STAT* stat, /**< problem statistics */
    1284 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    1285 SCIP_EVENTFILTER* eventfilter /**< global event filter */
    1286 );
    1287
    1288/** removes all non-basic columns and basic rows in whole LP, that are too old */
    1290 SCIP_LP* lp, /**< current LP data */
    1291 BMS_BLKMEM* blkmem, /**< block memory buffers */
    1292 SCIP_SET* set, /**< global SCIP settings */
    1293 SCIP_STAT* stat, /**< problem statistics */
    1294 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    1295 SCIP_EVENTFILTER* eventfilter /**< global event filter */
    1296 );
    1297
    1298/** removes all non-basic columns at 0.0 and basic rows in the part of the LP created at the current node */
    1300 SCIP_LP* lp, /**< current LP data */
    1301 BMS_BLKMEM* blkmem, /**< block memory buffers */
    1302 SCIP_SET* set, /**< global SCIP settings */
    1303 SCIP_STAT* stat, /**< problem statistics */
    1304 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    1305 SCIP_EVENTFILTER* eventfilter, /**< global event filter */
    1306 SCIP_Bool root /**< are we at the root node? */
    1307 );
    1308
    1309/** removes all non-basic columns at 0.0 and basic rows in the whole LP */
    1311 SCIP_LP* lp, /**< current LP data */
    1312 BMS_BLKMEM* blkmem, /**< block memory buffers */
    1313 SCIP_SET* set, /**< global SCIP settings */
    1314 SCIP_STAT* stat, /**< problem statistics */
    1315 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    1316 SCIP_EVENTFILTER* eventfilter, /**< global event filter */
    1317 SCIP_Bool root /**< are we at the root node? */
    1318 );
    1319
    1320/** removes all redundant rows that were added at the current node */
    1322 SCIP_LP* lp, /**< current LP data */
    1323 BMS_BLKMEM* blkmem, /**< block memory buffers */
    1324 SCIP_SET* set, /**< global SCIP settings */
    1325 SCIP_STAT* stat, /**< problem statistics */
    1326 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    1327 SCIP_EVENTFILTER* eventfilter /**< global event filter */
    1328 );
    1329
    1330/** initiates LP diving */
    1332 SCIP_LP* lp, /**< current LP data */
    1333 BMS_BLKMEM* blkmem, /**< block memory */
    1334 SCIP_SET* set, /**< global SCIP settings */
    1335 SCIP_STAT* stat /**< problem statistics */
    1336 );
    1337
    1338/** quits LP diving and resets bounds and objective values of columns to the current node's values */
    1340 SCIP_LP* lp, /**< current LP data */
    1341 BMS_BLKMEM* blkmem, /**< block memory */
    1342 SCIP_SET* set, /**< global SCIP settings */
    1343 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    1344 SCIP_STAT* stat, /**< problem statistics */
    1345 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    1346 SCIP_EVENTFILTER* eventfilter, /**< global event filter */
    1347 SCIP_PROB* prob, /**< problem data */
    1348 SCIP_VAR** vars, /**< array with all active variables */
    1349 int nvars /**< number of active variables */
    1350 );
    1351
    1352/** records a current row side such that any change will be undone after diving */
    1354 SCIP_LP* lp, /**< LP data object */
    1355 SCIP_ROW* row, /**< row affected by the change */
    1356 SCIP_SIDETYPE sidetype /**< side type */
    1357 );
    1358
    1359/** informs the LP that probing mode was initiated */
    1361 SCIP_LP* lp /**< current LP data */
    1362 );
    1363
    1364/** informs the LP that probing mode was finished */
    1366 SCIP_LP* lp /**< current LP data */
    1367 );
    1368
    1369/** informs the LP that the probing mode is now used for strongbranching */
    1371 SCIP_LP* lp /**< current LP data */
    1372 );
    1373
    1374/** informs the LP that the probing mode is not used for strongbranching anymore */
    1376 SCIP_LP* lp /**< current LP data */
    1377 );
    1378
    1379/** gets proven lower (dual) bound of last LP solution */
    1381 SCIP_LP* lp, /**< current LP data */
    1382 SCIP_SET* set, /**< global SCIP settings */
    1383 SCIP_Real* bound /**< pointer to store proven dual bound */
    1384 );
    1385
    1386/** gets proven dual bound of last LP solution */
    1388 SCIP_LP* lp, /**< current LP data */
    1389 SCIP_SET* set, /**< global SCIP settings */
    1390 SCIP_Bool* proved /**< pointer to store whether infeasibility is proven */
    1391 );
    1392
    1393/** writes LP to a file */
    1395 SCIP_LP* lp, /**< current LP data */
    1396 const char* fname /**< file name */
    1397 );
    1398
    1399/** writes MIP to a file */
    1401 SCIP_LP* lp, /**< current LP data */
    1402 SCIP_SET* set, /**< global SCIP settings */
    1403 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    1404 const char* fname, /**< file name */
    1405 SCIP_Bool genericnames, /**< should generic names like x_i and row_j be used in order to avoid
    1406 * troubles with reserved symbols? */
    1407 SCIP_Bool origobj, /**< should the original objective function be used? */
    1408 SCIP_OBJSENSE objsense, /**< objective sense */
    1409 SCIP_Real objscale, /**< objective scaling factor */
    1410 SCIP_Real objoffset, /**< objective offset, e.g., caused by variable fixings in presolving */
    1411 SCIP_Bool lazyconss /**< output removable rows as lazy constraints? */
    1412 );
    1413
    1414/** recalculates Euclidean norm of objective function vector of column variables if it have gotten unreliable during calculation */
    1416 SCIP_SET* set, /**< global SCIP settings */
    1417 SCIP_LP* lp /**< LP data */
    1418 );
    1419
    1420/** compute relative interior point */
    1422 SCIP_SET* set, /**< global SCIP settings */
    1423 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    1424 SCIP_LP* lp, /**< LP data */
    1425 SCIP_PROB* prob, /**< problem data */
    1426 SCIP_Bool relaxrows, /**< should the rows be relaxed */
    1427 SCIP_Bool inclobjcutoff, /**< should a row for the objective cutoff be included */
    1428 SCIP_Real timelimit, /**< time limit for LP solver */
    1429 int iterlimit, /**< iteration limit for LP solver */
    1430 SCIP_Real* point, /**< array to store relative interior point on exit */
    1431 SCIP_Bool* success /**< buffer to indicate whether interior point was successfully computed */
    1432 );
    1433
    1434/** computes two measures for dual degeneracy (dual degeneracy rate and variable-constraint ratio)
    1435 * based on the changes applied when reducing the problem to the optimal face
    1436 *
    1437 * returns the dual degeneracy rate, i.e., the share of nonbasic variables with reduced cost 0
    1438 * and the variable-constraint ratio, i.e., the number of unfixed variables in relation to the basis size
    1439 */
    1441 SCIP_LP* lp, /**< LP data */
    1442 SCIP_SET* set, /**< global SCIP settings */
    1443 SCIP_STAT* stat, /**< problem statistics */
    1444 SCIP_Real* degeneracy, /**< pointer to store the dual degeneracy rate */
    1445 SCIP_Real* varconsratio /**< pointer to store the variable-constraint ratio */
    1446 );
    1447
    1448/** gets array with columns of the LP */
    1450 SCIP_LP* lp /**< current LP data */
    1451 );
    1452
    1453/** gets current number of columns in LP */
    1454int SCIPlpGetNCols(
    1455 SCIP_LP* lp /**< current LP data */
    1456 );
    1457
    1458/** gets current number of unfixed columns in LP */
    1460 SCIP_LP* lp, /**< current LP data */
    1461 SCIP_Real eps /**< numerical tolerance */
    1462 );
    1463
    1464/** gets array with rows of the LP */
    1466 SCIP_LP* lp /**< current LP data */
    1467 );
    1468
    1469/** gets current number of rows in LP */
    1470int SCIPlpGetNRows(
    1471 SCIP_LP* lp /**< current LP data */
    1472 );
    1473
    1474/** gets array with newly added columns after the last mark */
    1476 SCIP_LP* lp /**< current LP data */
    1477 );
    1478
    1479/** gets number of newly added columns after the last mark */
    1481 SCIP_LP* lp /**< current LP data */
    1482 );
    1483
    1484/** gets array with newly added rows after the last mark */
    1486 SCIP_LP* lp /**< current LP data */
    1487 );
    1488
    1489/** gets number of newly added rows after the last mark */
    1491 SCIP_LP* lp /**< current LP data */
    1492 );
    1493
    1494/** gets Euclidean norm of objective function vector of column variables, only use this method if
    1495 * lp->objsqrnormunreliable == FALSE, so probably you have to call SCIPlpRecalculateObjSqrNorm before */
    1497 SCIP_LP* lp /**< LP data */
    1498 );
    1499
    1500/** gets the objective value of the root node LP; returns SCIP_INVALID if the root node LP was not (yet) solved */
    1502 SCIP_LP* lp /**< LP data */
    1503 );
    1504
    1505/** gets part of the objective value of the root node LP that results from COLUMN variables only;
    1506 * returns SCIP_INVALID if the root node LP was not (yet) solved
    1507 */
    1509 SCIP_LP* lp /**< LP data */
    1510 );
    1511
    1512/** gets part of the objective value of the root node LP that results from LOOSE variables only;
    1513 * returns SCIP_INVALID if the root node LP was not (yet) solved
    1514 */
    1516 SCIP_LP* lp /**< LP data */
    1517 );
    1518
    1519/** gets the LP solver interface */
    1521 SCIP_LP* lp /**< current LP data */
    1522 );
    1523
    1524/** sets whether the current lp is a relaxation of the current problem and its optimal objective value is a local lower bound */
    1525void SCIPlpSetIsRelax(
    1526 SCIP_LP* lp, /**< LP data */
    1527 SCIP_Bool relax /**< is the current lp a relaxation? */
    1528 );
    1529
    1530/** returns whether the current LP is a relaxation of the problem for which it has been solved and its
    1531 * solution value a valid local lower bound?
    1532 */
    1534 SCIP_LP* lp /**< LP data */
    1535 );
    1536
    1537/** returns whether the current LP is flushed and solved */
    1539 SCIP_LP* lp /**< current LP data */
    1540 );
    1541
    1542/** return whether the current LP solution passed the primal feasibility check */
    1544 SCIP_LP* lp /**< current LP data */
    1545 );
    1546
    1547/** return whether the current LP solution passed the dual feasibility check */
    1549 SCIP_LP* lp /**< current LP data */
    1550 );
    1551
    1552/** returns whether the current LP solution is a basic solution */
    1554 SCIP_LP* lp /**< current LP data */
    1555 );
    1556
    1557/** returns whether the LP is in diving mode */
    1559 SCIP_LP* lp /**< current LP data */
    1560 );
    1561
    1562/** returns whether the LP is in diving mode and the objective value of at least one column was changed */
    1564 SCIP_LP* lp /**< current LP data */
    1565 );
    1566
    1567/** marks the diving LP to have a changed objective function */
    1569 SCIP_LP* lp /**< current LP data */
    1570 );
    1571
    1572/** marks the diving LP to not have a changed objective function anymore */
    1574 SCIP_LP* lp /**< current LP data */
    1575 );
    1576
    1577/* returns TRUE if at least one left/right hand side of an LP row was changed during diving mode */
    1579 SCIP_LP* lp /**< current LP data */
    1580 );
    1581
    1582/** checks if absolute difference of values is in range of LP primal feastol */
    1584 SCIP_SET* set, /**< global SCIP settings */
    1585 SCIP_LP* lp, /**< current LP data */
    1586 SCIP_Real val1, /**< first value to be compared */
    1587 SCIP_Real val2 /**< second value to be compared */
    1588 );
    1589
    1590/** checks if absolute difference of val1 and val2 is lower than LP primal feastol */
    1592 SCIP_SET* set, /**< global SCIP settings */
    1593 SCIP_LP* lp, /**< current LP data */
    1594 SCIP_Real val1, /**< first value to be compared */
    1595 SCIP_Real val2 /**< second value to be compared */
    1596 );
    1597
    1598/** checks if absolute difference of val1 and val2 is not greater than LP primal feastol */
    1600 SCIP_SET* set, /**< global SCIP settings */
    1601 SCIP_LP* lp, /**< current LP data */
    1602 SCIP_Real val1, /**< first value to be compared */
    1603 SCIP_Real val2 /**< second value to be compared */
    1604 );
    1605
    1606/** checks if absolute difference of val1 and val2 is greater than LP primal feastol */
    1608 SCIP_SET* set, /**< global SCIP settings */
    1609 SCIP_LP* lp, /**< current LP data */
    1610 SCIP_Real val1, /**< first value to be compared */
    1611 SCIP_Real val2 /**< second value to be compared */
    1612 );
    1613
    1614/** checks if absolute difference of val1 and val2 is not lower than -LP primal feastol */
    1616 SCIP_SET* set, /**< global SCIP settings */
    1617 SCIP_LP* lp, /**< current LP data */
    1618 SCIP_Real val1, /**< first value to be compared */
    1619 SCIP_Real val2 /**< second value to be compared */
    1620 );
    1621
    1622/** checks if value is in range LP primal feasibility tolerance of 0.0 */
    1624 SCIP_LP* lp, /**< current LP data */
    1625 SCIP_Real val /**< value to be compared against zero */
    1626 );
    1627
    1628/** checks if value is greater than LP primal feasibility tolerance */
    1630 SCIP_LP* lp, /**< current LP data */
    1631 SCIP_Real val /**< value to be compared against zero */
    1632 );
    1633
    1634/** checks if value is lower than -LP primal feasibility tolerance */
    1636 SCIP_LP* lp, /**< current LP data */
    1637 SCIP_Real val /**< value to be compared against zero */
    1638 );
    1639
    1640
    1641#ifdef NDEBUG
    1642
    1643/* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
    1644 * speed up the algorithms.
    1645 */
    1646
    1647#define SCIPlpGetCols(lp) ((lp)->cols)
    1648#define SCIPlpGetNCols(lp) ((lp)->ncols)
    1649#define SCIPlpGetRows(lp) ((lp)->rows)
    1650#define SCIPlpGetNRows(lp) ((lp)->nrows)
    1651#define SCIPlpGetNewcols(lp) (&((lp)->cols[(lp)->firstnewcol]))
    1652#define SCIPlpGetNNewcols(lp) ((lp)->ncols - (lp)->firstnewcol)
    1653#define SCIPlpGetNewrows(lp) (&((lp)->rows[(lp)->firstnewrow]))
    1654#define SCIPlpGetNNewrows(lp) ((lp)->nrows - (lp)->firstnewrow)
    1655#define SCIPlpGetObjNorm(lp) (sqrt((lp)->objsqrnorm))
    1656#define SCIPlpGetRootObjval(lp) (MIN((lp)->rootlpobjval + (lp)->rootlooseobjval, SCIP_INVALID))
    1657#define SCIPlpGetRootColumnObjval(lp) ((lp)->rootlpobjval)
    1658#define SCIPlpGetRootLooseObjval(lp) ((lp)->rootlooseobjval)
    1659#define SCIPlpGetLPI(lp) (lp)->lpi
    1660#define SCIPlpSetIsRelax(lp,relax) ((lp)->isrelax = relax)
    1661#define SCIPlpIsRelax(lp) (lp)->isrelax
    1662#define SCIPlpIsSolved(lp) ((lp)->flushed && (lp)->solved)
    1663#define SCIPlpIsSolBasic(lp) ((lp)->solisbasic)
    1664#define SCIPlpDiving(lp) (lp)->diving
    1665#define SCIPlpDivingObjChanged(lp) (lp)->divingobjchg
    1666#define SCIPlpMarkDivingObjChanged(lp) ((lp)->divingobjchg = TRUE)
    1667#define SCIPlpUnmarkDivingObjChanged(lp) ((lp)->divingobjchg = FALSE)
    1668#define SCIPlpDivingRowsChanged(lp) ((lp)->ndivechgsides > 0)
    1669
    1670#define SCIPlpIsFeasEQ(set, lp, val1, val2) ( EPSEQ(val1, val2, (lp)->feastol) )
    1671#define SCIPlpIsFeasLT(set, lp, val1, val2) ( EPSLT(val1, val2, (lp)->feastol) )
    1672#define SCIPlpIsFeasLE(set, lp, val1, val2) ( EPSLE(val1, val2, (lp)->feastol) )
    1673#define SCIPlpIsFeasGT(set, lp, val1, val2) ( EPSGT(val1, val2, (lp)->feastol) )
    1674#define SCIPlpIsFeasGE(set, lp, val1, val2) ( EPSGE(val1, val2, (lp)->feastol) )
    1675#define SCIPlpIsFeasZero(lp, val) ( EPSZ(val, (lp)->feastol) )
    1676#define SCIPlpIsFeasPositive(lp, val) ( EPSP(val, (lp)->feastol) )
    1677#define SCIPlpIsFeasNegative(lp, val) ( EPSN(val, (lp)->feastol) )
    1678
    1679#endif
    1680
    1681#ifdef __cplusplus
    1682}
    1683#endif
    1684
    1685#endif
    static long bound
    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_RETCODE SCIPlpCleanupNew(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
    Definition: lp.c:16231
    SCIP_Bool SCIPlpIsSolBasic(SCIP_LP *lp)
    Definition: lp.c:18241
    SCIP_Real SCIProwGetMaxval(SCIP_ROW *row, SCIP_SET *set)
    Definition: lp.c:6901
    SCIP_Real SCIProwGetRelaxEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:7170
    SCIP_RETCODE SCIPcolChgUb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newub)
    Definition: lp.c:3997
    SCIP_Real SCIProwGetLPFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
    Definition: lp.c:6484
    SCIP_Real SCIPcolCalcRedcost(SCIP_COL *col, SCIP_Real *dualsol)
    Definition: lp.c:4042
    SCIP_RETCODE SCIPlpGetBInvRow(SCIP_LP *lp, int r, SCIP_Real *coef, int *inds, int *ninds)
    Definition: lp.c:10100
    SCIP_Real SCIProwGetNLPFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:6566
    SCIP_RETCODE SCIPcolFree(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
    Definition: lp.c:3572
    void SCIProwCapture(SCIP_ROW *row)
    Definition: lp.c:5554
    SCIP_RETCODE SCIPlpFreeState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
    Definition: lp.c:10350
    SCIP_Real SCIProwGetPseudoFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:6680
    SCIP_RETCODE SCIPlpUpdateAges(SCIP_LP *lp, SCIP_STAT *stat)
    Definition: lp.c:15622
    SCIP_RETCODE SCIPlpGetBInvCol(SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)
    Definition: lp.c:10122
    SCIP_RETCODE SCIPcolChgLb(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newlb)
    Definition: lp.c:3952
    SCIP_RETCODE SCIPlpInterrupt(SCIP_LP *lp, SCIP_Bool interrupt)
    Definition: lp.c:10367
    SCIP_RETCODE SCIProwChgCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)
    Definition: lp.c:5692
    SCIP_Real SCIPcolCalcFarkasCoef(SCIP_COL *col, SCIP_Real *dualfarkas)
    Definition: lp.c:4225
    SCIP_RETCODE SCIPlpGetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
    Definition: lp.c:10383
    void SCIPlpMarkSize(SCIP_LP *lp)
    Definition: lp.c:10040
    int SCIProwGetNumIntCols(SCIP_ROW *row, SCIP_SET *set)
    Definition: lp.c:6965
    SCIP_RETCODE SCIPlpGetState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
    Definition: lp.c:10283
    void SCIPlpRecalculateObjSqrNorm(SCIP_SET *set, SCIP_LP *lp)
    Definition: lp.c:18080
    int SCIPlpGetNNewcols(SCIP_LP *lp)
    Definition: lp.c:18047
    SCIP_Real SCIProwGetSolFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
    Definition: lp.c:6738
    void SCIProwRecalcPseudoActivity(SCIP_ROW *row, SCIP_STAT *stat)
    Definition: lp.c:6625
    SCIP_RETCODE SCIProwEnsureSize(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
    Definition: lp.c:636
    SCIP_Bool SCIPlpIsFeasPositive(SCIP_LP *lp, SCIP_Real val)
    Definition: lp.c:19319
    SCIP_Bool SCIPlpIsFeasGT(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)
    Definition: lp.c:19268
    SCIP_RETCODE SCIPlpIsInfeasibilityProved(SCIP_LP *lp, SCIP_SET *set, SCIP_Bool *proved)
    Definition: lp.c:16889
    SCIP_Real SCIProwGetRelaxFeasibility(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:6504
    SCIP_RETCODE SCIPlpAddCol(SCIP_LP *lp, SCIP_SET *set, SCIP_COL *col, int depth)
    Definition: lp.c:9699
    SCIP_Real SCIPlpGetLooseObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
    Definition: lp.c:13475
    SCIP_RETCODE SCIPlpSetState(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue, SCIP_LPISTATE *lpistate, SCIP_Bool wasprimfeas, SCIP_Bool wasprimchecked, SCIP_Bool wasdualfeas, SCIP_Bool wasdualchecked)
    Definition: lp.c:10307
    SCIP_Real SCIPlpGetObjNorm(SCIP_LP *lp)
    Definition: lp.c:18111
    SCIP_Real SCIProwGetMaxActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:6849
    SCIP_RETCODE SCIProwMakeIntegral(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Bool *success)
    Definition: lp.c:6197
    SCIP_RETCODE SCIPlpRemoveNewObsoletes(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
    Definition: lp.c:16031
    SCIP_Bool SCIProwIsLPEfficacious(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Bool root)
    Definition: lp.c:7095
    SCIP_Real SCIProwGetSolEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
    Definition: lp.c:7111
    SCIP_RETCODE SCIPlpStartStrongbranch(SCIP_LP *lp)
    Definition: lp.c:4375
    SCIP_Bool SCIPlpDivingObjChanged(SCIP_LP *lp)
    Definition: lp.c:18261
    SCIP_RETCODE SCIPlpFlush(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_EVENTQUEUE *eventqueue)
    Definition: lp.c:8917
    SCIP_RETCODE SCIPlpUpdateVarLb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
    Definition: lp.c:14264
    void SCIPlpDecNLoosevars(SCIP_LP *lp)
    Definition: lp.c:14686
    SCIP_RETCODE SCIProwAddConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real addval)
    Definition: lp.c:5856
    void SCIPlpSetFeastol(SCIP_LP *lp, SCIP_SET *set, SCIP_Real newfeastol)
    Definition: lp.c:10509
    SCIP_RETCODE SCIPcolChgCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
    Definition: lp.c:3708
    SCIP_RETCODE rowUnlink(SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp)
    Definition: lp.c:2611
    SCIP_RETCODE SCIPlpWrite(SCIP_LP *lp, const char *fname)
    Definition: lp.c:16911
    int SCIProwGetMaxidx(SCIP_ROW *row, SCIP_SET *set)
    Definition: lp.c:6933
    SCIP_Real SCIPlpGetModifiedPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_VAR *var, SCIP_Real oldbound, SCIP_Real newbound, SCIP_BOUNDTYPE boundtype)
    Definition: lp.c:13711
    SCIP_Real SCIProwGetLPActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
    Definition: lp.c:6454
    void SCIProwMarkNotRemovableLocal(SCIP_ROW *row, SCIP_STAT *stat)
    Definition: lp.c:8124
    SCIP_RETCODE SCIPlpUpdateVarLbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldlb, SCIP_Real newlb)
    Definition: lp.c:14226
    SCIP_LPSOLSTAT SCIPlpGetSolstat(SCIP_LP *lp)
    Definition: lp.c:13420
    SCIP_RETCODE SCIPlpShrinkCols(SCIP_LP *lp, SCIP_SET *set, int newncols)
    Definition: lp.c:9883
    void SCIPlpStoreRootObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
    Definition: lp.c:13495
    SCIP_RETCODE SCIProwCreate(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, const char *name, int len, SCIP_COL **cols, SCIP_Real *vals, SCIP_Real lhs, SCIP_Real rhs, SCIP_ROWORIGINTYPE origintype, void *origin, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool removable)
    Definition: lp.c:5313
    SCIP_ROW ** SCIPlpGetNewrows(SCIP_LP *lp)
    Definition: lp.c:18058
    void SCIPlpRecomputeLocalAndGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
    Definition: lp.c:13519
    SCIP_Real SCIPlpGetColumnObjval(SCIP_LP *lp)
    Definition: lp.c:13464
    SCIP_RETCODE SCIPlpUpdateAddVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
    Definition: lp.c:14384
    SCIP_RETCODE SCIPlpClear(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
    Definition: lp.c:10021
    SCIP_Bool SCIPlpIsPrimalReliable(SCIP_LP *lp)
    Definition: lp.c:18221
    void SCIPlpSetIsRelax(SCIP_LP *lp, SCIP_Bool relax)
    Definition: lp.c:18188
    SCIP_RETCODE SCIProwDelCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col)
    Definition: lp.c:5646
    SCIP_RETCODE SCIPlpGetBase(SCIP_LP *lp, int *cstat, int *rstat)
    Definition: lp.c:10083
    SCIP_Bool SCIPlpIsRelax(SCIP_LP *lp)
    Definition: lp.c:18201
    void SCIPcolInvalidateStrongbranchData(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
    Definition: lp.c:4459
    SCIP_RETCODE SCIPlpSolveAndEval(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool limitresolveiters, SCIP_Bool aging, SCIP_Bool keepsol, SCIP_Bool forcedlpsolve, SCIP_Bool *lperror)
    Definition: lp.c:12680
    SCIP_RETCODE SCIPcolGetStrongbranch(SCIP_COL *col, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Bool updatecol, SCIP_Bool updatestat, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)
    Definition: lp.c:4494
    SCIP_RETCODE SCIPcolDelCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row)
    Definition: lp.c:3663
    SCIP_Real SCIPlpGetObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
    Definition: lp.c:13436
    SCIP_RETCODE SCIPlpCleanupAll(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_Bool root)
    Definition: lp.c:16270
    void SCIProwRecalcLPActivity(SCIP_ROW *row, SCIP_STAT *stat)
    Definition: lp.c:6402
    SCIP_Real SCIProwGetMinval(SCIP_ROW *row, SCIP_SET *set)
    Definition: lp.c:6917
    SCIP_RETCODE SCIPlpEndStrongbranch(SCIP_LP *lp)
    Definition: lp.c:4390
    SCIP_Longint SCIPcolGetStrongbranchLPAge(SCIP_COL *col, SCIP_STAT *stat)
    Definition: lp.c:4932
    SCIP_Real SCIPlpGetRootObjval(SCIP_LP *lp)
    Definition: lp.c:18144
    SCIP_Bool SCIPlpIsFeasGE(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)
    Definition: lp.c:19288
    SCIP_RETCODE SCIPlpGetProvedLowerbound(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *bound)
    Definition: lp.c:16875
    SCIP_RETCODE SCIPcolChgObj(SCIP_COL *col, SCIP_SET *set, SCIP_LP *lp, SCIP_Real newobj)
    Definition: lp.c:3893
    SCIP_Real SCIProwGetLPSolCutoffDistance(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_LP *lp)
    Definition: lp.c:6997
    SCIP_Real SCIProwGetSolActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol)
    Definition: lp.c:6696
    SCIP_RETCODE SCIPlpFree(SCIP_LP **lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
    Definition: lp.c:9619
    void SCIPlpMarkDivingObjChanged(SCIP_LP *lp)
    Definition: lp.c:18271
    SCIP_COL ** SCIPlpGetNewcols(SCIP_LP *lp)
    Definition: lp.c:18036
    SCIP_RETCODE SCIPlpFreeNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
    Definition: lp.c:10427
    SCIP_RETCODE SCIProwAddCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real val)
    Definition: lp.c:5625
    SCIP_RETCODE SCIPlpGetBInvARow(SCIP_LP *lp, int r, SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)
    Definition: lp.c:10148
    SCIP_LPI * SCIPlpGetLPI(SCIP_LP *lp)
    Definition: lp.c:18178
    SCIP_Bool SCIPlpIsFeasLT(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)
    Definition: lp.c:19228
    SCIP_RETCODE SCIProwIncCoef(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_COL *col, SCIP_Real incval)
    Definition: lp.c:5744
    SCIP_RETCODE SCIPlpRemoveRedundantRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
    Definition: lp.c:16309
    SCIP_Bool SCIPlpDiving(SCIP_LP *lp)
    Definition: lp.c:18251
    void SCIPlpUnmarkDivingObjChanged(SCIP_LP *lp)
    Definition: lp.c:18282
    SCIP_RETCODE SCIPlpGetBasisInd(SCIP_LP *lp, int *basisind)
    Definition: lp.c:10066
    SCIP_Real SCIProwGetNLPEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:7210
    SCIP_RETCODE SCIPlpSetNorms(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_LPINORMS *lpinorms)
    Definition: lp.c:10407
    SCIP_RETCODE SCIProwChgLocal(SCIP_ROW *row, SCIP_Bool local)
    Definition: lp.c:5946
    SCIP_RETCODE SCIPlpComputeRelIntPoint(SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_LP *lp, SCIP_PROB *prob, SCIP_Bool relaxrows, SCIP_Bool inclobjcutoff, SCIP_Real timelimit, int iterlimit, SCIP_Real *point, SCIP_Bool *success)
    Definition: lp.c:19007
    SCIP_RETCODE SCIPlpGetDualDegeneracy(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Real *degeneracy, SCIP_Real *varconsratio)
    Definition: lp.c:19079
    SCIP_Real SCIProwGetLPEfficacy(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
    Definition: lp.c:7054
    SCIP_RETCODE SCIPlpGetSol(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
    Definition: lp.c:14704
    void SCIProwRecalcNorms(SCIP_ROW *row, SCIP_SET *set)
    Definition: lp.c:6393
    void SCIPcolGetStrongbranchLast(SCIP_COL *col, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Real *solval, SCIP_Real *lpobjval)
    Definition: lp.c:4900
    SCIP_RETCODE SCIPcolAddCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real val)
    Definition: lp.c:3642
    SCIP_RETCODE SCIPcolIncCoef(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_ROW *row, SCIP_Real incval)
    Definition: lp.c:3759
    SCIP_Real SCIPlpGetRootLooseObjval(SCIP_LP *lp)
    Definition: lp.c:18168
    SCIP_RETCODE SCIPlpGetDualfarkas(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool forcedlpsolve, SCIP_Bool *valid)
    Definition: lp.c:15406
    void SCIProwPrint(SCIP_ROW *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
    Definition: lp.c:5514
    SCIP_RETCODE SCIPlpSetCutoffbound(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real cutoffbound)
    Definition: lp.c:10451
    SCIP_RETCODE SCIPlpRecordOldRowSideDive(SCIP_LP *lp, SCIP_ROW *row, SCIP_SIDETYPE sidetype)
    Definition: lp.c:16675
    SCIP_RETCODE SCIPlpMarkFlushed(SCIP_LP *lp, SCIP_SET *set)
    Definition: lp.c:8981
    SCIP_Real SCIPcolGetFeasibility(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp)
    Definition: lp.c:4171
    SCIP_RETCODE SCIPlpShrinkRows(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, int newnrows)
    Definition: lp.c:9955
    SCIP_Bool SCIProwIsRedundant(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:6870
    void SCIPlpStartStrongbranchProbing(SCIP_LP *lp)
    Definition: lp.c:16729
    SCIP_RETCODE SCIPlpGetIterations(SCIP_LP *lp, int *iterations)
    Definition: lp.c:15607
    SCIP_RETCODE SCIProwChgConstant(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real constant)
    Definition: lp.c:5801
    SCIP_RETCODE SCIPlpStartProbing(SCIP_LP *lp)
    Definition: lp.c:16699
    SCIP_Real SCIPlpGetFeastol(SCIP_LP *lp)
    Definition: lp.c:10499
    SCIP_Bool SCIProwIsSolEfficacious(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool root)
    Definition: lp.c:7154
    SCIP_RETCODE SCIPlpUpdateDelVar(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
    Definition: lp.c:14405
    void SCIPlpEndStrongbranchProbing(SCIP_LP *lp)
    Definition: lp.c:16742
    SCIP_RETCODE SCIPlpGetBInvACol(SCIP_LP *lp, int c, SCIP_Real *coef, int *inds, int *ninds)
    Definition: lp.c:10173
    SCIP_Bool SCIPlpIsFeasZero(SCIP_LP *lp, SCIP_Real val)
    Definition: lp.c:19308
    SCIP_RETCODE SCIPlpRemoveAllObsoletes(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
    Definition: lp.c:16062
    SCIP_RETCODE SCIProwCatchEvent(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int *filterpos)
    Definition: lp.c:8079
    SCIP_RETCODE colLink(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
    Definition: lp.c:2488
    SCIP_RETCODE SCIProwFree(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
    Definition: lp.c:5464
    SCIP_Real SCIPcolGetFarkasValue(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
    Definition: lp.c:4356
    SCIP_RETCODE colUnlink(SCIP_COL *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
    Definition: lp.c:2531
    SCIP_RETCODE SCIPlpCreate(SCIP_LP **lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)
    Definition: lp.c:9325
    SCIP_Bool SCIPlpDivingRowsChanged(SCIP_LP *lp)
    Definition: lp.c:18293
    SCIP_RETCODE SCIPlpUpdateVarUbGlobal(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
    Definition: lp.c:14305
    SCIP_RETCODE SCIPlpReset(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_PROB *prob, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter)
    Definition: lp.c:9664
    SCIP_Real SCIPcolGetRedcost(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
    Definition: lp.c:4147
    SCIP_RETCODE SCIPlpEndProbing(SCIP_LP *lp)
    Definition: lp.c:16714
    SCIP_RETCODE SCIProwDropEvent(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTTYPE eventtype, SCIP_EVENTHDLR *eventhdlr, SCIP_EVENTDATA *eventdata, int filterpos)
    Definition: lp.c:8103
    SCIP_RETCODE SCIPcolCreate(SCIP_COL **col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROW **rows, SCIP_Real *vals, SCIP_Bool removable)
    Definition: lp.c:3473
    SCIP_Bool SCIPlpIsRootLPRelax(SCIP_LP *lp)
    Definition: lp.c:18134
    SCIP_Bool SCIPlpIsSolved(SCIP_LP *lp)
    Definition: lp.c:18211
    SCIP_RETCODE SCIPlpUpdateVarUb(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldub, SCIP_Real newub)
    Definition: lp.c:14343
    SCIP_RETCODE SCIPlpUpdateVarObj(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var, SCIP_Real oldobj, SCIP_Real newobj)
    Definition: lp.c:14166
    SCIP_Real SCIPcolGetFarkasCoef(SCIP_COL *col, SCIP_STAT *stat, SCIP_LP *lp)
    Definition: lp.c:4330
    SCIP_RETCODE SCIPlpUpdateVarLoose(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
    Definition: lp.c:14665
    SCIP_Real SCIPlpGetGlobalPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
    Definition: lp.c:13587
    SCIP_Bool SCIPlpIsDualReliable(SCIP_LP *lp)
    Definition: lp.c:18231
    SCIP_RETCODE SCIPlpAddRow(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_ROW *row, int depth)
    Definition: lp.c:9759
    SCIP_RETCODE SCIPlpWriteMip(SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, const char *fname, SCIP_Bool genericnames, SCIP_Bool origobj, SCIP_OBJSENSE objsense, SCIP_Real objscale, SCIP_Real objoffset, SCIP_Bool lazyconss)
    Definition: lp.c:16925
    int SCIProwGetMinidx(SCIP_ROW *row, SCIP_SET *set)
    Definition: lp.c:6949
    SCIP_RETCODE SCIPlpStartDive(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:16383
    SCIP_Bool SCIPlpIsFeasNegative(SCIP_LP *lp, SCIP_Real val)
    Definition: lp.c:19330
    SCIP_RETCODE SCIPlpEndDive(SCIP_LP *lp, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_EVENTFILTER *eventfilter, SCIP_PROB *prob, SCIP_VAR **vars, int nvars)
    Definition: lp.c:16489
    SCIP_COL ** SCIPlpGetCols(SCIP_LP *lp)
    Definition: lp.c:17969
    int SCIPlpGetNCols(SCIP_LP *lp)
    Definition: lp.c:17979
    SCIP_RETCODE SCIProwChgRhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real rhs)
    Definition: lp.c:5914
    SCIP_Real SCIPlpGetRootColumnObjval(SCIP_LP *lp)
    Definition: lp.c:18156
    SCIP_RETCODE SCIPlpGetUnboundedSol(SCIP_LP *lp, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)
    Definition: lp.c:15019
    SCIP_RETCODE SCIProwCalcIntegralScalar(SCIP_ROW *row, SCIP_SET *set, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Bool usecontvars, SCIP_Real *intscalar, SCIP_Bool *success)
    Definition: lp.c:5963
    SCIP_Real SCIPlpGetCutoffbound(SCIP_LP *lp)
    Definition: lp.c:10441
    SCIP_Bool SCIPlpIsFeasEQ(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)
    Definition: lp.c:19208
    SCIP_Real SCIProwGetPseudoActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:6652
    SCIP_ROW ** SCIPlpGetRows(SCIP_LP *lp)
    Definition: lp.c:18016
    void SCIPlpSetRootLPIsRelax(SCIP_LP *lp, SCIP_Bool isrelax)
    Definition: lp.c:18123
    SCIP_RETCODE SCIProwChgLhs(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp, SCIP_Real lhs)
    Definition: lp.c:5882
    void SCIProwForceSort(SCIP_ROW *row, SCIP_SET *set)
    Definition: lp.c:6380
    void SCIPcolMarkNotRemovableLocal(SCIP_COL *col, SCIP_STAT *stat)
    Definition: lp.c:4944
    SCIP_RETCODE rowLink(SCIP_ROW *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LP *lp)
    Definition: lp.c:2569
    int SCIPlpGetNUnfixedCols(SCIP_LP *lp, SCIP_Real eps)
    Definition: lp.c:17989
    SCIP_Real SCIProwGetMinActivity(SCIP_ROW *row, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lp.c:6828
    void SCIPcolSetStrongbranchData(SCIP_COL *col, SCIP_SET *set, SCIP_STAT *stat, SCIP_LP *lp, SCIP_Real lpobjval, SCIP_Real primsol, SCIP_Real sbdown, SCIP_Real sbup, SCIP_Bool sbdownvalid, SCIP_Bool sbupvalid, SCIP_Longint iter, int itlim)
    Definition: lp.c:4405
    SCIP_Bool SCIPlpIsFeasLE(SCIP_SET *set, SCIP_LP *lp, SCIP_Real val1, SCIP_Real val2)
    Definition: lp.c:19248
    int SCIPlpGetNNewrows(SCIP_LP *lp)
    Definition: lp.c:18069
    void SCIPlpResetFeastol(SCIP_LP *lp, SCIP_SET *set)
    Definition: lp.c:10534
    SCIP_RETCODE SCIPlpGetPrimalRay(SCIP_LP *lp, SCIP_SET *set, SCIP_Real *ray)
    Definition: lp.c:15345
    int SCIProwGetNumImpliedIntCols(SCIP_ROW *row, SCIP_SET *set)
    Definition: lp.c:6981
    void SCIProwDelaySort(SCIP_ROW *row)
    Definition: lp.c:6369
    void SCIPlpInvalidateRootObjval(SCIP_LP *lp)
    Definition: lp.c:13508
    int SCIPlpGetNRows(SCIP_LP *lp)
    Definition: lp.c:18026
    SCIP_Real SCIProwGetObjParallelism(SCIP_ROW *row, SCIP_SET *set, SCIP_LP *lp)
    Definition: lp.c:8046
    SCIP_RETCODE SCIPlpSumRows(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob, SCIP_Real *weights, SCIP_REALARRAY *sumcoef, SCIP_Real *sumlhs, SCIP_Real *sumrhs)
    Definition: lp.c:10197
    SCIP_RETCODE SCIPcolGetStrongbranches(SCIP_COL **cols, int ncols, SCIP_Bool integral, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_LP *lp, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, SCIP_Bool *lperror)
    Definition: lp.c:4677
    SCIP_Real SCIPlpGetPseudoObjval(SCIP_LP *lp, SCIP_SET *set, SCIP_PROB *prob)
    Definition: lp.c:13619
    void SCIPlpSetSizeMark(SCIP_LP *lp, int nrows, int ncols)
    Definition: lp.c:10052
    SCIP_RETCODE SCIPlpUpdateVarColumn(SCIP_LP *lp, SCIP_SET *set, SCIP_VAR *var)
    Definition: lp.c:14541
    SCIP_RETCODE SCIProwRelease(SCIP_ROW **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LP *lp)
    Definition: lp.c:5567
    void SCIPcolPrint(SCIP_COL *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
    Definition: lp.c:3602
    memory allocation routines
    struct BMS_BlkMem BMS_BLKMEM
    Definition: memory.h:437
    real eps
    public methods for LP management
    data structures for LP management
    Definition: heur_padm.c:135
    type definitions for branching rules
    struct SCIP_EventData SCIP_EVENTDATA
    Definition: type_event.h:179
    uint64_t SCIP_EVENTTYPE
    Definition: type_event.h:156
    type definitions for LP management
    enum SCIP_RowOriginType SCIP_ROWORIGINTYPE
    Definition: type_lp.h:79
    enum SCIP_LPSolStat SCIP_LPSOLSTAT
    Definition: type_lp.h:52
    enum SCIP_BoundType SCIP_BOUNDTYPE
    Definition: type_lp.h:60
    enum SCIP_SideType SCIP_SIDETYPE
    Definition: type_lp.h:68
    type definitions for message output methods
    type definitions for miscellaneous datastructures
    type definitions for storing and manipulating the main problem
    enum SCIP_Objsense SCIP_OBJSENSE
    Definition: type_prob.h:50
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63
    type definitions for global SCIP settings
    type definitions for storing primal CIP solutions
    type definitions for problem statistics
    type definitions for problem variables