Scippy

    SCIP

    Solving Constraint Integer Programs

    lpexact.h
    Go to the documentation of this file.
    1/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    2/* */
    3/* This file is part of the program and library */
    4/* SCIP --- Solving Constraint Integer Programs */
    5/* */
    6/* Copyright (c) 2002-2025 Zuse Institute Berlin (ZIB) */
    7/* */
    8/* Licensed under the Apache License, Version 2.0 (the "License"); */
    9/* you may not use this file except in compliance with the License. */
    10/* You may obtain a copy of the License at */
    11/* */
    12/* http://www.apache.org/licenses/LICENSE-2.0 */
    13/* */
    14/* Unless required by applicable law or agreed to in writing, software */
    15/* distributed under the License is distributed on an "AS IS" BASIS, */
    16/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */
    17/* See the License for the specific language governing permissions and */
    18/* limitations under the License. */
    19/* */
    20/* You should have received a copy of the Apache-2.0 license */
    21/* along with SCIP; see the file LICENSE. If not visit scipopt.org. */
    22/* */
    23/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
    24
    25/**@file lpexact.h
    26 * @ingroup INTERNALAPI
    27 * @brief internal methods for exact LP management
    28 * @author Leon Eifler
    29 */
    30
    31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    32
    33#ifndef __SCIP_LPEXACT_H__
    34#define __SCIP_LPEXACT_H__
    35
    36
    37#include <stdio.h>
    38
    39#include "scip/def.h"
    41#include "scip/rational.h"
    42#include "scip/type_event.h"
    43#include "scip/type_lpexact.h"
    44#include "scip/type_misc.h"
    45#include "scip/type_prob.h"
    46#include "scip/type_rational.h"
    47#include "scip/type_set.h"
    48#include "scip/type_stat.h"
    49#include "scip/type_sol.h"
    50#include "scip/type_var.h"
    51#include "scip/pub_lpexact.h"
    52
    53#ifdef __cplusplus
    54extern "C" {
    55#endif
    56
    57/*
    58 * Column methods
    59 */
    60
    61/** creates an LP column */
    63 SCIP_COLEXACT** col, /**< pointer to column data */
    64 SCIP_COL* fpcol, /**< the corresponding fp col */
    65 BMS_BLKMEM* blkmem, /**< block memory */
    66 SCIP_SET* set, /**< global SCIP settings */
    67 SCIP_STAT* stat, /**< problem statistics */
    68 SCIP_VAR* var, /**< variable, this column represents */
    69 int len, /**< number of nonzeros in the column */
    70 SCIP_ROWEXACT** rows, /**< array with rows of column entries */
    71 SCIP_RATIONAL** vals, /**< array with coefficients of column entries */
    72 SCIP_Bool removable /**< should the column be removed from the LP due to aging or cleanup? */
    73 );
    74
    75/** frees an LP column */
    77 SCIP_COLEXACT** col, /**< pointer to LP column */
    78 BMS_BLKMEM* blkmem /**< block memory */
    79 );
    80
    81/** output column to file stream */
    83 SCIP_COLEXACT* col, /**< LP column */
    84 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    85 FILE* file /**< output file (or NULL for standard output) */
    86 );
    87
    88/** adds a previously non existing coefficient to an LP column */
    90 SCIP_COLEXACT* col, /**< LP column */
    91 BMS_BLKMEM* blkmem, /**< block memory */
    92 SCIP_SET* set, /**< global SCIP settings */
    93 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    94 SCIP_LPEXACT* lpexact, /**< current LP data */
    95 SCIP_ROWEXACT* row, /**< LP row */
    96 SCIP_RATIONAL* val /**< value of coefficient */
    97 );
    98
    99/** deletes coefficient from column */
    101 SCIP_COLEXACT* col, /**< column to be changed */
    102 SCIP_SET* set, /**< global SCIP settings */
    103 SCIP_LPEXACT* lpexact, /**< current LP data */
    104 SCIP_ROWEXACT* row /**< coefficient to be deleted */
    105 );
    106
    107/** changes or adds a coefficient to an LP column */
    109 SCIP_COLEXACT* col, /**< LP column */
    110 BMS_BLKMEM* blkmem, /**< block memory */
    111 SCIP_SET* set, /**< global SCIP settings */
    112 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    113 SCIP_LPEXACT* lpexact, /**< current LP data */
    114 SCIP_ROWEXACT* row, /**< LP row */
    115 SCIP_RATIONAL* val /**< value of coefficient */
    116 );
    117
    118/** increases value of an existing or nonexisting coefficient in an LP column */
    120 SCIP_COLEXACT* col, /**< LP column */
    121 BMS_BLKMEM* blkmem, /**< block memory */
    122 SCIP_SET* set, /**< global SCIP settings */
    123 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    124 SCIP_LPEXACT* lpexact, /**< current LP data */
    125 SCIP_ROWEXACT* row, /**< LP row */
    126 SCIP_RATIONAL* incval /**< value to add to the coefficient */
    127 );
    128
    129/** changes objective value of column */
    131 SCIP_COLEXACT* col, /**< LP column to change */
    132 SCIP_SET* set, /**< global SCIP settings */
    133 SCIP_LPEXACT* lpexact, /**< current LP data */
    134 SCIP_RATIONAL* newobj /**< new objective value */
    135 );
    136
    137/** changes lower bound of column */
    139 SCIP_COLEXACT* col, /**< LP column to change */
    140 SCIP_SET* set, /**< global SCIP settings */
    141 SCIP_LPEXACT* lpexact, /**< current LP data */
    142 SCIP_RATIONAL* newlb /**< new lower bound value */
    143 );
    144
    145/** changes upper bound of column */
    147 SCIP_COLEXACT* col, /**< LP column to change */
    148 SCIP_SET* set, /**< global SCIP settings */
    149 SCIP_LPEXACT* lpexact, /**< current LP data */
    150 SCIP_RATIONAL* newub /**< new upper bound value */
    151 );
    152
    153/*
    154 * Row methods
    155 */
    156
    157/** increases usage counter of LP row */
    159 SCIP_ROWEXACT* row /**< LP row */
    160 );
    161
    162/** output column to file stream */
    164 SCIP_ROWEXACT* row, /**< LP row */
    165 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    166 FILE* file /**< output file (or NULL for standard output) */
    167 );
    168
    169/** get the index of an exact row */
    171 SCIP_ROWEXACT* row /**< LP row */
    172 );
    173
    174/** return TRUE iff row is modifiable */
    176 SCIP_ROWEXACT* row /**< LP row */
    177 );
    178
    179/** returns true, if an exact row for this fprow was already created */
    181 SCIP_LPEXACT* lpexact, /**< exact lp data structure */
    182 SCIP_ROW* row /**< SCIP row */
    183 );
    184
    185/** changes left hand side of exact LP row */
    187 SCIP_ROWEXACT* rowexact, /**< exact LP row */
    188 SCIP_SET* set, /**< global SCIP settings */
    189 SCIP_LPEXACT* lpexact, /**< current exact LP data */
    190 SCIP_RATIONAL* lhs /**< new left hand side */
    191 );
    192
    193/** changes right hand side of exact LP row */
    195 SCIP_ROWEXACT* rowexact, /**< exact LP row */
    196 SCIP_SET* set, /**< global SCIP settings */
    197 SCIP_LPEXACT* lpexact, /**< current exact LP data */
    198 SCIP_RATIONAL* rhs /**< new right hand side */
    199 );
    200
    201/** returns exact col corresponding to fpcol, if it exists. Otherwise returns NULL */
    203 SCIP_COL* col /**< SCIP col */
    204 );
    205
    206/** calculates the Farkas coefficient or reduced cost of a column i using the given dual Farkas vector y */
    208 SCIP_COLEXACT* col, /**< LP column */
    209 SCIP_SET* set, /**< SCIP settings pointer */
    210 SCIP_RATIONAL* result, /**< rational to store the result */
    211 SCIP_RATIONAL** dual, /**< dense dual Farkas vector, NULL to use internal row-values */
    212 SCIP_Bool usefarkas /**< should the farkas coefficient be computed ? */
    213 );
    214
    215/** creates and captures an LP row */
    217 SCIP_ROWEXACT** row, /**< pointer to LP row data */
    218 SCIP_ROW* fprow, /**< corresponding fp row */
    219 SCIP_ROW* fprowrhs, /**< rhs-part of fp-relaxation of this row if necessary, NULL otherwise */
    220 BMS_BLKMEM* blkmem, /**< block memory */
    221 SCIP_SET* set, /**< global SCIP settings */
    222 SCIP_STAT* stat, /**< problem statistics */
    223 SCIP_LPEXACT* lpexact, /**< current LP data */
    224 int len, /**< number of nonzeros in the row */
    225 SCIP_COLEXACT** cols, /**< array with columns of row entries */
    226 SCIP_RATIONAL** vals, /**< array with coefficients of row entries */
    227 SCIP_RATIONAL* lhs, /**< left hand side of row */
    228 SCIP_RATIONAL* rhs, /**< right hand side of row */
    229 SCIP_Bool isfprelaxable /**< is it possible to make fp-relaxation of this row */
    230 );
    231
    232/** creates and captures an exact LP row from a fp row
    233 *
    234 * @note This may change the floating-point coefficients slightly if the rational representation is rounded to smaller
    235 * denominators according to parameter exact/cutmaxdenom.
    236 */
    238 SCIP_ROW* fprow, /**< corresponding fp row to create from */
    239 BMS_BLKMEM* blkmem, /**< block memory */
    240 SCIP_SET* set, /**< global SCIP settings */
    241 SCIP_STAT* stat, /**< problem statistics */
    242 SCIP_EVENTQUEUE* eventqueue, /**< the eventqueue */
    243 SCIP_PROB* prob, /**< scip prob structure */
    244 SCIP_LPEXACT* lpexact /**< current LP data */
    245 );
    246
    247/** populate data of two empty fp rows with data from exact row */
    249 BMS_BLKMEM* blkmem, /**< block memory */
    250 SCIP_SET* set, /**< global SCIP settings */
    251 SCIP_STAT* stat, /**< SCIP statistics */
    252 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    253 SCIP_LPEXACT* lpexact, /**< current exact LP data */
    254 SCIP_PROB* prob, /**< SCIP problem data */
    255 SCIP_ROWEXACT* row, /**< SCIP row */
    256 SCIP_ROW* rowlhs, /**< fp row-relaxation wrt lhs */
    257 SCIP_ROW* rowrhs, /**< fp row-relaxation wrt rhs */
    258 SCIP_Bool* onerowrelax, /**< is one row enough to represent the exact row */
    259 SCIP_Bool* hasfprelax /**< is it possible to generate relaxations at all for this row? */
    260 );
    261
    262/** applies all cached changes to the LP solver */
    264 SCIP_LPEXACT* lpexact, /**< current exact LP data */
    265 BMS_BLKMEM* blkmem, /**< block memory */
    266 SCIP_SET* set, /**< global SCIP settings */
    267 SCIP_EVENTQUEUE* eventqueue /**< event queue */
    268 );
    269
    270/** ensures all rows/columns are correctly updated, but changes are not yet communicated to the exact LP solver */
    272 SCIP_LPEXACT* lpexact, /**< current exact LP data */
    273 BMS_BLKMEM* blkmem, /**< block memory */
    274 SCIP_SET* set, /**< global SCIP settings */
    275 SCIP_EVENTQUEUE* eventqueue /**< event queue */
    276 );
    277
    278/*
    279 * lp methods
    280 */
    281
    282/** returns whether the success rate of the Neumaier-Shcherbina safe bounding method is sufficiently high */
    284 SCIP_LPEXACT* lpexact /**< pointer to LP data object */
    285 );
    286
    287/** returns whether it is possible to use project and shift bounding method */
    289 SCIP_LPEXACT* lpexact /**< pointer to LP data object */
    290 );
    291
    292/** checks that lp and fplp are properly synced */
    294 SCIP_LPEXACT* lpexact, /**< pointer to LP data object */
    295 SCIP_SET* set, /**< global SCIP settings */
    296 SCIP_MESSAGEHDLR* msg /**< message handler */
    297 );
    298
    299/** creates empty LP data object */
    301 SCIP_LPEXACT** lpexact, /**< pointer to LP data object */
    302 BMS_BLKMEM* blkmem, /**< block memory */
    303 SCIP_LP* fplp, /**< the normal floating point lp */
    304 SCIP_SET* set, /**< global SCIP settings */
    305 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    306 SCIP_STAT* stat, /**< problem statistics */
    307 const char* name /**< problem name */
    308 );
    309
    310/** frees LP data object */
    312 SCIP_LPEXACT** lpexact, /**< pointer to LP data object */
    313 BMS_BLKMEM* blkmem, /**< block memory */
    314 SCIP_SET* set /**< global SCIP settings */
    315 );
    316
    317/** adds a column to the LP and captures the variable */
    319 SCIP_LPEXACT* lpexact, /**< LP data */
    320 SCIP_SET* set, /**< global SCIP settings */
    321 SCIP_COLEXACT* col /**< LP column */
    322 );
    323
    324/** adds a row to the LP and captures it */
    326 SCIP_LPEXACT* lpexact, /**< LP data */
    327 SCIP_SET* set, /**< global SCIP settings */
    328 SCIP_ROWEXACT* rowexact /**< LP row */
    329 );
    330
    331/** returns the feasibility of a row for the given solution */
    333 SCIP_ROWEXACT* row, /**< LP row */
    334 SCIP_SET* set, /**< global SCIP settings */
    335 SCIP_STAT* stat, /**< problem statistics data */
    336 SCIP_SOL* sol, /**< primal CIP solution */
    337 SCIP_RATIONAL* result /**< result pointer */
    338 );
    339
    340/** does activity computation with running error analysis for a row, return TRUE on success */
    342 SCIP_ROWEXACT* rowexact, /**< LP row */
    343 SCIP_SET* set, /**< global SCIP settings */
    344 SCIP_STAT* stat, /**< problem statistics data */
    345 SCIP_SOL* sol, /**< primal CIP solution */
    346 SCIP_Real* activity, /**< the approximate activity */
    347 SCIP_Real* errorbound /**< the error bound */
    348 );
    349
    350/** returns the activity of a row for a given solution */
    352 SCIP_ROWEXACT* rowexact, /**< LP row */
    353 SCIP_SET* set, /**< global SCIP settings */
    354 SCIP_STAT* stat, /**< problem statistics data */
    355 SCIP_SOL* sol, /**< primal CIP solution */
    356 SCIP_Bool useexact, /**< should an exact solution be used */
    357 SCIP_RATIONAL* result /**< resulting activity */
    358 );
    359
    360/** decreases usage counter of LP row, and frees memory if necessary */
    362 SCIP_ROWEXACT** row, /**< pointer to LP row */
    363 BMS_BLKMEM* blkmem, /**< block memory */
    364 SCIP_SET* set, /**< global SCIP settings */
    365 SCIP_LPEXACT* lpexact /**< current LP data */
    366 );
    367
    368/** frees an LP row */
    370 SCIP_ROWEXACT** row, /**< pointer to LP row */
    371 BMS_BLKMEM* blkmem, /**< block memory */
    372 SCIP_SET* set, /**< global SCIP settings */
    373 SCIP_LPEXACT* lpexact /**< current LP data */
    374 );
    375
    376/** ensuresr, that column array of row can store at least num entries */
    378 SCIP_ROWEXACT* row, /**< LP row */
    379 BMS_BLKMEM* blkmem, /**< block memory */
    380 SCIP_SET* set, /**< global SCIP settings */
    381 int num /**< minimum number of entries to store */
    382 );
    383
    384/** add constant value to a row */
    386 SCIP_ROWEXACT* row, /**< LP row */
    387 SCIP_SET* set, /**< global SCIP settings */
    388 SCIP_STAT* stat, /**< problem statistics */
    389 SCIP_LPEXACT* lpexact, /**< current LP data */
    390 SCIP_RATIONAL* addval /**< constant value to add to the row */
    391 );
    392
    393/** adds a previously non existing coefficient to an LP row */
    395 SCIP_ROWEXACT* rowexact, /**< LP row */
    396 BMS_BLKMEM* blkmem, /**< block memory */
    397 SCIP_SET* set, /**< global SCIP settings */
    398 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    399 SCIP_LPEXACT* lpexact, /**< current LP data */
    400 SCIP_COLEXACT* colexact, /**< LP column */
    401 SCIP_RATIONAL* val /**< value of coefficient */
    402 );
    403
    404/** deletes coefficient from row */
    406 SCIP_ROWEXACT* row, /**< row to be changed */
    407 SCIP_SET* set, /**< global SCIP settings */
    408 SCIP_LPEXACT* lpexact, /**< current LP data */
    409 SCIP_COLEXACT* col /**< coefficient to be deleted */
    410 );
    411
    412/** changes or adds a coefficient to an LP row */
    414 SCIP_ROWEXACT* row, /**< LP row */
    415 BMS_BLKMEM* blkmem, /**< block memory */
    416 SCIP_SET* set, /**< global SCIP settings */
    417 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    418 SCIP_LPEXACT* lpexact, /**< current LP data */
    419 SCIP_COLEXACT* col, /**< LP column */
    420 SCIP_RATIONAL* val /**< value of coefficient */
    421 );
    422
    423/** increases value of an existing or nonexisting coefficient in an LP column */
    425 SCIP_ROWEXACT* row, /**< LP row */
    426 BMS_BLKMEM* blkmem, /**< block memory */
    427 SCIP_SET* set, /**< global SCIP settings */
    428 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    429 SCIP_LPEXACT* lpexact, /**< current LP data */
    430 SCIP_COLEXACT* col, /**< LP column */
    431 SCIP_RATIONAL* incval /**< valpelue to add to the coefficient */
    432 );
    433
    434/** changes constant value of a row */
    436 SCIP_ROWEXACT* row, /**< LP row */
    437 SCIP_STAT* stat, /**< problem statistics */
    438 SCIP_LPEXACT* lpexact, /**< current LP data */
    439 SCIP_RATIONAL* constant /**< new constant value */
    440 );
    441
    442/** returns the feasibility of a row in the current LP solution: negative value means infeasibility */
    444 SCIP_ROWEXACT* row, /**< LP row */
    445 SCIP_SET* set, /**< global SCIP settings */
    446 SCIP_STAT* stat, /**< problem statistics */
    447 SCIP_LPEXACT* lpexact, /**< current LP data */
    448 SCIP_RATIONAL* result /**< rational pointer to store the result */
    449 );
    450
    451/** returns the pseudo feasibility of a row in the current pseudo solution: negative value means infeasibility */
    453 SCIP_ROWEXACT* row, /**< LP row */
    454 SCIP_SET* set, /**< global SCIP settings */
    455 SCIP_STAT* stat, /**< problem statistics */
    456 SCIP_RATIONAL* result /**< rational pointer to store the result */
    457 );
    458
    459/** returns the activity of a row in the current LP solution */
    461 SCIP_ROWEXACT* row, /**< LP row */
    462 SCIP_STAT* stat, /**< problem statistics */
    463 SCIP_LPEXACT* lpexact /**< current LP data */
    464 );
    465
    466/** returns the pseudo activity of a row in the current pseudo solution */
    468 SCIP_ROWEXACT* row, /**< LP row */
    469 SCIP_STAT* stat /**< problem statistics */
    470 );
    471
    472/** enables delaying of row sorting */
    474 SCIP_ROWEXACT* rowexact /**< LP rowexact */
    475 );
    476
    477/** disables delaying of row sorting, sorts row and merges coefficients with equal columns */
    479 SCIP_ROWEXACT* rowexact, /**< LP rowexact */
    480 SCIP_SET* set /**< global SCIP settings */
    481 );
    482
    483/** recalculates the current activity of a row */
    485 SCIP_ROWEXACT* rowexact, /**< LP row */
    486 SCIP_STAT* stat /**< problem statistics */
    487 );
    488
    489 /** calculates the current pseudo activity of a row */
    491 SCIP_ROWEXACT* rowexact, /**< row data */
    492 SCIP_STAT* stat /**< problem statistics */
    493 );
    494
    495/** gets objective value of column */
    497 SCIP_COLEXACT* col /**< LP column */
    498 );
    499
    500/** gets lower bound of column */
    502 SCIP_COLEXACT* col /**< LP column */
    503 );
    504
    505/** gets upper bound of column */
    507 SCIP_COLEXACT* col /**< LP column */
    508 );
    509
    510/** gets best bound of column with respect to the objective function */
    512 SCIP_COLEXACT* col /**< LP column */
    513 );
    514
    515/** gets the primal LP solution of a column */
    517 SCIP_COLEXACT* col /**< LP column */
    518 );
    519
    520/*
    521 * lp update methods
    522 */
    523
    524/** updates current pseudo and loose objective value for a change in a variable's objective value */
    526 SCIP_SET* set, /**< global SCIP settings */
    527 SCIP_LPEXACT* lpexact, /**< current LP data */
    528 SCIP_VAR* var, /**< problem variable that changed */
    529 SCIP_RATIONAL* oldobj, /**< old objective value of variable */
    530 SCIP_RATIONAL* newobj /**< new objective value of variable */
    531 );
    532
    533/** updates current root pseudo objective value for a global change in a variable's lower bound */
    535 SCIP_LPEXACT* lpexact, /**< current LP data */
    536 SCIP_SET* set, /**< global SCIP settings */
    537 SCIP_VAR* var, /**< problem variable that changed */
    538 SCIP_RATIONAL* oldlb, /**< old lower bound of variable */
    539 SCIP_RATIONAL* newlb /**< new lower bound of variable */
    540 );
    541
    542/** updates current pseudo and loose objective value for a change in a variable's lower bound */
    544 SCIP_LPEXACT* lpexact, /**< current LP data */
    545 SCIP_SET* set, /**< global SCIP settings */
    546 SCIP_VAR* var, /**< problem variable that changed */
    547 SCIP_RATIONAL* oldlb, /**< old lower bound of variable */
    548 SCIP_RATIONAL* newlb /**< new lower bound of variable */
    549 );
    550
    551/** updates current root pseudo objective value for a global change in a variable's upper bound */
    553 SCIP_LPEXACT* lpexact, /**< current LP data */
    554 SCIP_SET* set, /**< global SCIP settings */
    555 SCIP_VAR* var, /**< problem variable that changed */
    556 SCIP_RATIONAL* oldub, /**< old upper bound of variable */
    557 SCIP_RATIONAL* newub /**< new upper bound of variable */
    558 );
    559
    560/** updates current pseudo objective value for a change in a variable's upper bound */
    562 SCIP_LPEXACT* lpexact, /**< current LP data */
    563 SCIP_SET* set, /**< global SCIP settings */
    564 SCIP_VAR* var, /**< problem variable that changed */
    565 SCIP_RATIONAL* oldub, /**< old upper bound of variable */
    566 SCIP_RATIONAL* newub /**< new upper bound of variable */
    567 );
    568
    569/** informs LP, that given variable was added to the problem */
    571 SCIP_LPEXACT* lpexact, /**< current LP data */
    572 SCIP_SET* set, /**< global SCIP settings */
    573 SCIP_VAR* var /**< variable that is now a LOOSE problem variable */
    574 );
    575
    576/** informs LP, that given variable is to be deleted from the problem */
    578 SCIP_LPEXACT* lpexact, /**< current LP data */
    579 SCIP_SET* set, /**< global SCIP settings */
    580 SCIP_VAR* var /**< variable that will be deleted from the problem */
    581 );
    582
    583/** informs LP, that given formerly loose problem variable is now a column variable */
    585 SCIP_LPEXACT* lpexact, /**< current LP data */
    586 SCIP_SET* set, /**< global SCIP settings */
    587 SCIP_VAR* var /**< problem variable that changed from LOOSE to COLUMN */
    588 );
    589
    590/** informs LP, that given formerly column problem variable is now again a loose variable */
    592 SCIP_LPEXACT* lpexact, /**< current LP data */
    593 SCIP_SET* set, /**< global SCIP settings */
    594 SCIP_VAR* var /**< problem variable that changed from COLUMN to LOOSE */
    595 );
    596
    597/** decrease the number of loose variables by one */
    599 SCIP_LPEXACT* lpexact /**< current LP data */
    600 );
    601
    603 SCIP_LPEXACT* lpexact /**< current LP data */
    604 );
    605
    606/** stores the LP solution in the columns and rows */
    608 SCIP_LPEXACT* lpexact, /**< current LP data */
    609 SCIP_SET* set, /**< global SCIP settings */
    610 SCIP_STAT* stat, /**< problem statistics */
    611 SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
    612 SCIP_Bool* dualfeasible, /**< pointer to store whether the solution is dual feasible, or NULL */
    613 SCIP_Bool overwritefplp /**< should the floating point values be overwritten, e.g. if fp lp was infeasible */
    614 );
    615
    616/** stores LP solution with infinite objective value in the columns and rows */
    618 SCIP_LPEXACT* lpexact, /**< current LP data */
    619 SCIP_SET* set, /**< global SCIP settings */
    620 SCIP_STAT* stat, /**< problem statistics */
    621 SCIP_Bool* primalfeasible, /**< pointer to store whether the solution is primal feasible, or NULL */
    622 SCIP_Bool* rayfeasible /**< pointer to store whether the primal ray is a feasible unboundedness proof, or NULL */
    623 );
    624
    625/** returns primal ray proving the unboundedness of the current LP */
    627 SCIP_LPEXACT* lpexact, /**< current LP data */
    628 SCIP_SET* set, /**< global SCIP settings */
    629 SCIP_RATIONAL** ray /**< array for storing primal ray values, they are stored w.r.t. the problem index of the variables,
    630 * so the size of this array should be at least number of active variables
    631 * (all entries have to be initialized to 0 before) */
    632 );
    633
    634/** stores the dual Farkas multipliers for infeasibility proof in rows. besides
    635 *
    636 * @note The Farkas proof is checked for validity if lp/checkfarkas = TRUE and @p valid is not NULL.
    637 */
    639 SCIP_LPEXACT* lpexact, /**< current LP data */
    640 SCIP_SET* set, /**< global SCIP settings */
    641 SCIP_STAT* stat, /**< problem statistics */
    642 SCIP_Bool* valid, /**< pointer to store whether the Farkas proof is valid or NULL */
    643 SCIP_Bool overwritefplp /**< should the floating point values be overwritten, e.g. if fp lp was infeasible */
    644 );
    645
    646/** get number of iterations used in last LP solve */
    648 SCIP_LPEXACT* lpexact, /**< current exact LP data */
    649 int* iterations /**< pointer to store the iteration count */
    650 );
    651
    652/** gets objective value of current LP
    653 *
    654 * @note This method returns the objective value of the current LP solution, which might be primal or dual infeasible
    655 * if a limit was hit during solving. It must not be used as a dual bound if the LP solution status is
    656 * SCIP_LPSOLSTAT_ITERLIMIT or SCIP_LPSOLSTAT_TIMELIMIT.
    657 */
    659 SCIP_LPEXACT* lpexact, /**< current LP data */
    660 SCIP_SET* set, /**< global SCIP settings */
    661 SCIP_RATIONAL* res /**< result pointer to store rational */
    662 );
    663
    664/** gets the pseudo objective value for the current search node; that is all variables set to their best (w.r.t. the
    665 * objective function) local bound
    666 */
    668 SCIP_LPEXACT* lpexact, /**< current LP data */
    669 SCIP_SET* set, /**< global SCIP settings */
    670 SCIP_RATIONAL* res /**< result pointer to store rational */
    671 );
    672
    673/** removes all columns after the given number of cols from the LP */
    675 SCIP_LPEXACT* lpexact, /**< LP data */
    676 SCIP_SET* set, /**< global SCIP settings */
    677 int newncols /**< new number of columns in the LP */
    678 );
    679
    680/** removes and releases all rows after the given number of rows from the LP */
    682 SCIP_LPEXACT* lpexact, /**< LP data */
    683 BMS_BLKMEM* blkmem, /**< block memory */
    684 SCIP_SET* set, /**< global SCIP settings */
    685 int newnrows /**< new number of rows in the LP */
    686 );
    687
    688/* deletes the marked rows from the LP and the LP interface */
    690 SCIP_LPEXACT* lpexact, /**< current LP data */
    691 BMS_BLKMEM* blkmem, /**< block memory buffers */
    692 SCIP_SET* set, /**< global SCIP settings */
    693 int* rowdstat /**< deletion status of rows: 1 if row should be deleted, 0 if not */
    694 );
    695
    696/** resets the LP to the empty LP by removing all columns and rows from LP, releasing all rows, and flushing the
    697 * changes to the LP solver
    698 */
    700 SCIP_LPEXACT* lpexact, /**< LP data */
    701 BMS_BLKMEM* blkmem, /**< block memory */
    702 SCIP_SET* set, /**< global SCIP settings */
    703 SCIP_STAT* stat, /**< problem statistics */
    704 SCIP_EVENTQUEUE* eventqueue /**< event queue */
    705 );
    706
    707/** removes all columns and rows from LP, releases all rows */
    709 SCIP_LPEXACT* lpexact, /**< LP data */
    710 BMS_BLKMEM* blkmem, /**< block memory */
    711 SCIP_SET* set /**< global SCIP settings */
    712 );
    713
    714/** forces an exact lp to be solved in the next exact bound computation */
    716 SCIP_LPEXACT* lpexact, /**< exact LP data */
    717 SCIP_SET* set /**< global SCIP settings */
    718 );
    719
    720/** forces the next exact bound computation to be executed even in probing mode */
    722 SCIP_LPEXACT* lpexact, /**< exact LP data */
    723 SCIP_SET* set /**< global SCIP settings */
    724 );
    725
    726/** allows an exact lp to be solved in the next exact bound computation */
    728 SCIP_LPEXACT* lpexact, /**< exact LP data */
    729 SCIP_SET* set, /**< global SCIP settings */
    730 SCIP_Bool allowexact /**< TRUE if next safe bounding call should be allowed to be exact, FALSE otherwise */
    731 );
    732
    733/** gets solution status of current exact LP */
    735 SCIP_LPEXACT* lpexact /**< current LP data */
    736 );
    737
    738/** sets the upper objective limit of the exact LP solver */
    740 SCIP_LPEXACT* lpexact, /**< current exact LP data */
    741 SCIP_SET* set, /**< global SCIP settings */
    742 SCIP_Real cutoffbound /**< new upper objective limit */
    743 );
    744
    745/** solves the LP with simplex algorithm, and copy the solution into the column's data */
    747 SCIP_LPEXACT* lpexact, /**< LP data */
    748 SCIP_LP* lp, /**< LP data */
    749 SCIP_SET* set, /**< global SCIP settings */
    750 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler */
    751 BMS_BLKMEM* blkmem, /**< block memory buffers */
    752 SCIP_STAT* stat, /**< problem statistics */
    753 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    754 SCIP_PROB* prob, /**< problem data */
    755 SCIP_Longint itlim, /**< maximal number of LP iterations to perform, or -1 for no limit */
    756 SCIP_Bool* lperror, /**< pointer to store whether an unresolved LP error occurred */
    757 SCIP_Bool usefarkas /**< are we aiming to prove infeasibility? */
    758 );
    759
    760/** stores exact LP state (like basis information) into LP state object */
    762 SCIP_LPEXACT* lpexact, /**< exact LP data */
    763 BMS_BLKMEM* blkmem, /**< block memory */
    764 SCIP_LPISTATE** lpistate /**< pointer to LP state information (like basis information) */
    765 );
    766
    767/** loads exact LP state (like basis information) into solver */
    769 SCIP_LPEXACT* lpexact, /**< exact LP data */
    770 BMS_BLKMEM* blkmem, /**< block memory */
    771 SCIP_SET* set, /**< global SCIP settings */
    772 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    773 SCIP_LPISTATE* lpistate, /**< LP state information (like basis information) */
    774 SCIP_Bool wasprimfeas, /**< primal feasibility when LP state information was stored */
    775 SCIP_Bool wasprimchecked, /**< true if the LP solution has passed the primal feasibility check */
    776 SCIP_Bool wasdualfeas, /**< dual feasibility when LP state information was stored */
    777 SCIP_Bool wasdualchecked /**< true if the LP solution has passed the dual feasibility check */
    778 );
    779
    780/** frees exact LP state information */
    782 SCIP_LPEXACT* lpexact, /**< exact LP data */
    783 BMS_BLKMEM* blkmem, /**< block memory */
    784 SCIP_LPISTATE** lpistate /**< pointer to LP state information (like basis information) */
    785 );
    786
    787/** starts exact LP diving and saves bounds and objective values of columns to the current nodes's values */
    789 SCIP_LPEXACT* lpexact, /**< current exact LP data */
    790 BMS_BLKMEM* blkmem, /**< block memory */
    791 SCIP_SET* set, /**< global SCIP settings */
    792 SCIP_STAT* stat /**< problem statistics */
    793 );
    794
    795/** quits exact LP diving and resets bounds and objective values of columns to the current node's values */
    797 SCIP_LPEXACT* lpexact, /**< current LP data */
    798 BMS_BLKMEM* blkmem, /**< block memory */
    799 SCIP_SET* set, /**< global SCIP settings */
    800 SCIP_STAT* stat, /**< problem statistics */
    801 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
    802 SCIP_VAR** vars, /**< array with all active variables */
    803 int nvars /**< number of active variables */
    804 );
    805
    806/** writes exact LP to a file */
    808 SCIP_LPEXACT* lpexact, /**< current LP data */
    809 const char* fname /**< file name */
    810 );
    811
    812/** overwrites the dual values stored in the fp lp with exact values */
    814 SCIP_LPEXACT* lpexact, /**< current LP data */
    815 SCIP_Bool dualfarkas /**< TRUE if farkas proof, FALSE if dual sol? */
    816 );
    817
    818/** synchronizes the exact LP with cuts from the floating-point LP */
    820 SCIP_LPEXACT* lpexact, /**< LP data */
    821 BMS_BLKMEM* blkmem, /**< block memory */
    822 SCIP_SET* set /**< global SCIP settings */
    823 );
    824
    825#ifdef __cplusplus
    826}
    827#endif
    828
    829#endif
    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_Bool SCIPlpExactProjectShiftPossible(SCIP_LPEXACT *lpexact)
    Definition: lpexact.c:3909
    void SCIProwExactRecalcLPActivity(SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
    Definition: lpexact.c:5891
    SCIP_RETCODE SCIProwExactGetSolFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_RATIONAL *result)
    Definition: lpexact.c:5446
    SCIP_RETCODE SCIPlpExactShrinkRows(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int newnrows)
    Definition: lpexact.c:7503
    void SCIPlpExactOverwriteFpDualSol(SCIP_LPEXACT *lpexact, SCIP_Bool dualfarkas)
    Definition: lpexact.c:8449
    SCIP_Bool SCIProwExactIsModifiable(SCIP_ROWEXACT *row)
    Definition: lpexact.c:5046
    SCIP_RETCODE SCIPlpExactFreeState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
    Definition: lpexact.c:8160
    SCIP_RETCODE SCIPlpExactReset(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue)
    Definition: lpexact.c:7550
    void SCIPlpExactForceExactSolve(SCIP_LPEXACT *lpexact, SCIP_SET *set)
    Definition: lpexact.c:7598
    SCIP_RETCODE SCIPlpExactGetSol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible, SCIP_Bool overwritefplp)
    Definition: lpexact.c:6853
    SCIP_RETCODE SCIPlpExactLink(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
    Definition: lpexact.c:3711
    SCIP_RETCODE SCIPlpExactSetState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPISTATE *lpistate, SCIP_Bool wasprimfeas, SCIP_Bool wasprimchecked, SCIP_Bool wasdualfeas, SCIP_Bool wasdualchecked)
    Definition: lpexact.c:8118
    SCIP_RETCODE SCIProwExactFree(SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
    Definition: lpexact.c:5610
    SCIP_RETCODE SCIPlpExactSolveAndEval(SCIP_LPEXACT *lpexact, SCIP_LP *lp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, BMS_BLKMEM *blkmem, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_Longint itlim, SCIP_Bool *lperror, SCIP_Bool usefarkas)
    Definition: lpexact.c:4477
    SCIP_RETCODE SCIPlpExactUpdateDelVar(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
    Definition: lpexact.c:6634
    SCIP_RETCODE SCIPcolExactDelCoef(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row)
    Definition: lpexact.c:2852
    SCIP_RETCODE SCIPlpExactDelRowset(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, int *rowdstat)
    Definition: lpexact.c:2643
    SCIP_RATIONAL * SCIProwExactGetLPActivity(SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact)
    Definition: lpexact.c:5713
    SCIP_RETCODE SCIProwExactGetLPFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *result)
    Definition: lpexact.c:5655
    SCIP_Bool SCIPlpExactIsSynced(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_MESSAGEHDLR *msg)
    Definition: lpexact.c:3920
    SCIP_RETCODE SCIPlpExactGetState(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
    Definition: lpexact.c:8094
    SCIP_RETCODE SCIPlpExactGetPrimalRay(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL **ray)
    Definition: lpexact.c:7137
    void SCIProwExactPrint(SCIP_ROWEXACT *row, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
    Definition: lpexact.c:4953
    SCIP_RETCODE SCIPcolExactAddCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
    Definition: lpexact.c:2834
    SCIP_RETCODE SCIPlpExactUpdateVarColumn(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
    Definition: lpexact.c:6663
    SCIP_RETCODE SCIPlpExactStartDive(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat)
    Definition: lpexact.c:8177
    SCIP_RETCODE SCIProwExactIncCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *incval)
    Definition: lpexact.c:5321
    SCIP_RETCODE SCIPlpExactSyncLPs(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
    Definition: lpexact.c:8474
    SCIP_RETCODE SCIProwExactEnsureSize(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, int num)
    Definition: lpexact.c:6062
    SCIP_RETCODE SCIPlpExactUpdateVarLoose(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
    Definition: lpexact.c:6718
    SCIP_RETCODE SCIProwExactAddCoef(SCIP_ROWEXACT *rowexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *colexact, SCIP_RATIONAL *val)
    Definition: lpexact.c:5200
    void SCIProwExactCapture(SCIP_ROWEXACT *row)
    Definition: lpexact.c:4940
    SCIP_Bool SCIProwHasExRow(SCIP_LPEXACT *lpexact, SCIP_ROW *row)
    Definition: lpexact.c:5057
    SCIP_RETCODE SCIPcolExactIncCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *incval)
    Definition: lpexact.c:2945
    SCIP_RETCODE SCIPlpExactUpdateAddVar(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var)
    Definition: lpexact.c:6603
    SCIP_RETCODE SCIPcolExactChgCoef(SCIP_COLEXACT *col, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_ROWEXACT *row, SCIP_RATIONAL *val)
    Definition: lpexact.c:2894
    SCIP_RETCODE SCIProwExactCreate(SCIP_ROWEXACT **row, SCIP_ROW *fprow, SCIP_ROW *fprowrhs, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, int len, SCIP_COLEXACT **cols, SCIP_RATIONAL **vals, SCIP_RATIONAL *lhs, SCIP_RATIONAL *rhs, SCIP_Bool isfprelaxable)
    Definition: lpexact.c:3138
    void SCIProwExactDelaySort(SCIP_ROWEXACT *rowexact)
    Definition: lpexact.c:5867
    SCIP_RETCODE SCIProwExactRelease(SCIP_ROWEXACT **row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_LPEXACT *lpexact)
    Definition: lpexact.c:5583
    SCIP_RETCODE SCIProwExactGetPseudoFeasibility(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_RATIONAL *result)
    Definition: lpexact.c:5684
    void SCIPlpExactDecNLoosevars(SCIP_LPEXACT *lpexact)
    Definition: lpexact.c:6770
    SCIP_RETCODE SCIPlpExactAddRow(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_ROWEXACT *rowexact)
    Definition: lpexact.c:4133
    SCIP_RATIONAL * SCIPcolExactGetPrimsol(SCIP_COLEXACT *col)
    Definition: lpexact.c:6039
    SCIP_RETCODE SCIPlpExactGetIterations(SCIP_LPEXACT *lpexact, int *iterations)
    Definition: lpexact.c:7398
    SCIP_COLEXACT * SCIPcolGetColExact(SCIP_COL *col)
    Definition: lpexact.c:5099
    void SCIProwExactForceSort(SCIP_ROWEXACT *rowexact, SCIP_SET *set)
    Definition: lpexact.c:5878
    int SCIProwExactGetIndex(SCIP_ROWEXACT *row)
    Definition: lpexact.c:4996
    void SCIPlpExactGetPseudoObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
    Definition: lpexact.c:7438
    SCIP_RETCODE SCIPlpExactUpdateVarObj(SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_VAR *var, SCIP_RATIONAL *oldobj, SCIP_RATIONAL *newobj)
    Definition: lpexact.c:6422
    SCIP_RETCODE SCIProwExactDelCoef(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col)
    Definition: lpexact.c:5225
    int SCIPlpExactGetNRows(SCIP_LPEXACT *lpexact)
    Definition: lpexact.c:6788
    SCIP_RETCODE SCIPlpExactClear(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
    Definition: lpexact.c:7581
    SCIP_Bool SCIProwExactGetSolActivityWithErrorbound(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Real *activity, SCIP_Real *errorbound)
    Definition: lpexact.c:5475
    SCIP_RATIONAL * SCIPcolExactGetUb(SCIP_COLEXACT *col)
    Definition: lpexact.c:6016
    SCIP_RETCODE SCIProwExactCreateFromRow(SCIP_ROW *fprow, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_PROB *prob, SCIP_LPEXACT *lpexact)
    Definition: lpexact.c:3373
    SCIP_RETCODE SCIPlpExactGetDualfarkas(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *valid, SCIP_Bool overwritefplp)
    Definition: lpexact.c:7198
    SCIP_RETCODE SCIPlpExactEndDive(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_VAR **vars, int nvars)
    Definition: lpexact.c:8280
    SCIP_RETCODE SCIPlpExactShrinkCols(SCIP_LPEXACT *lpexact, SCIP_SET *set, int newncols)
    Definition: lpexact.c:7455
    SCIP_RETCODE SCIPlpExactAddCol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_COLEXACT *col)
    Definition: lpexact.c:4089
    SCIP_RETCODE SCIProwExactGetSolActivity(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_SOL *sol, SCIP_Bool useexact, SCIP_RATIONAL *result)
    Definition: lpexact.c:5529
    SCIP_RETCODE SCIPlpExactGetUnboundedSol(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_STAT *stat, SCIP_Bool *primalfeasible, SCIP_Bool *rayfeasible)
    Definition: lpexact.c:7124
    SCIP_RETCODE SCIPlpExactSetCutoffbound(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Real cutoffbound)
    Definition: lpexact.c:4178
    SCIP_LPSOLSTAT SCIPlpExactGetSolstat(SCIP_LPEXACT *lpexact)
    Definition: lpexact.c:8084
    SCIP_RETCODE SCIPlpExactUpdateVarUb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
    Definition: lpexact.c:6568
    SCIP_RETCODE SCIPcolExactCalcFarkasRedcostCoef(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_RATIONAL *result, SCIP_RATIONAL **dual, SCIP_Bool usefarkas)
    Definition: lpexact.c:5111
    SCIP_Bool SCIPlpExactBoundShiftUseful(SCIP_LPEXACT *lpexact)
    Definition: lpexact.c:3899
    void SCIPlpExactAllowExactSolve(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_Bool allowexact)
    Definition: lpexact.c:7630
    SCIP_RATIONAL * SCIProwExactGetPseudoActivity(SCIP_ROWEXACT *row, SCIP_STAT *stat)
    Definition: lpexact.c:5734
    SCIP_RETCODE SCIPcolExactFree(SCIP_COLEXACT **col, BMS_BLKMEM *blkmem)
    Definition: lpexact.c:2754
    void SCIPcolExactPrint(SCIP_COLEXACT *col, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
    Definition: lpexact.c:2796
    SCIP_RETCODE SCIPlpExactUpdateVarLbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
    Definition: lpexact.c:6469
    SCIP_RETCODE SCIPcolExactChgObj(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newobj)
    Definition: lpexact.c:3001
    SCIP_RETCODE SCIPlpExactUpdateVarLb(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldlb, SCIP_RATIONAL *newlb)
    Definition: lpexact.c:6501
    SCIP_RETCODE SCIProwExactGenerateFpRows(BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_PROB *prob, SCIP_ROWEXACT *row, SCIP_ROW *rowlhs, SCIP_ROW *rowrhs, SCIP_Bool *onerowrelax, SCIP_Bool *hasfprelax)
    Definition: lpexact.c:3454
    SCIP_RETCODE SCIPcolExactChgUb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newub)
    Definition: lpexact.c:3093
    SCIP_RETCODE SCIPlpExactCreate(SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_LP *fplp, SCIP_SET *set, SCIP_MESSAGEHDLR *messagehdlr, SCIP_STAT *stat, const char *name)
    Definition: lpexact.c:3933
    SCIP_RETCODE SCIProwExactAddConstant(SCIP_ROWEXACT *row, SCIP_SET *set, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *addval)
    Definition: lpexact.c:5416
    SCIP_RATIONAL * SCIPcolExactGetBestBound(SCIP_COLEXACT *col)
    Definition: lpexact.c:6026
    void SCIPlpExactGetObjval(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_RATIONAL *res)
    Definition: lpexact.c:7416
    SCIP_RETCODE SCIPcolExactCreate(SCIP_COLEXACT **col, SCIP_COL *fpcol, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_VAR *var, int len, SCIP_ROWEXACT **rows, SCIP_RATIONAL **vals, SCIP_Bool removable)
    Definition: lpexact.c:2410
    SCIP_RETCODE SCIProwExactChgRhs(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *rhs)
    Definition: lpexact.c:8063
    SCIP_RATIONAL * SCIPcolExactGetLb(SCIP_COLEXACT *col)
    Definition: lpexact.c:6006
    SCIP_RETCODE SCIProwExactChgCoef(SCIP_ROWEXACT *row, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue, SCIP_LPEXACT *lpexact, SCIP_COLEXACT *col, SCIP_RATIONAL *val)
    Definition: lpexact.c:5269
    SCIP_RETCODE SCIPlpExactWrite(SCIP_LPEXACT *lpexact, const char *fname)
    Definition: lpexact.c:8434
    SCIP_RETCODE SCIPlpExactFree(SCIP_LPEXACT **lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set)
    Definition: lpexact.c:4039
    SCIP_RATIONAL * SCIPcolExactGetObj(SCIP_COLEXACT *col)
    Definition: lpexact.c:5996
    SCIP_RETCODE SCIPlpExactFlush(SCIP_LPEXACT *lpexact, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_EVENTQUEUE *eventqueue)
    Definition: lpexact.c:3651
    void SCIProwExactRecalcPseudoActivity(SCIP_ROWEXACT *rowexact, SCIP_STAT *stat)
    Definition: lpexact.c:5960
    SCIP_RETCODE SCIProwExactChgLhs(SCIP_ROWEXACT *rowexact, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *lhs)
    Definition: lpexact.c:8042
    SCIP_RETCODE SCIProwExactChgConstant(SCIP_ROWEXACT *row, SCIP_STAT *stat, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *constant)
    Definition: lpexact.c:5385
    void SCIPlpExactForceSafeBound(SCIP_LPEXACT *lpexact, SCIP_SET *set)
    Definition: lpexact.c:7614
    SCIP_RETCODE SCIPcolExactChgLb(SCIP_COLEXACT *col, SCIP_SET *set, SCIP_LPEXACT *lpexact, SCIP_RATIONAL *newlb)
    Definition: lpexact.c:3048
    SCIP_RETCODE SCIPlpExactUpdateVarUbGlobal(SCIP_LPEXACT *lpexact, SCIP_SET *set, SCIP_VAR *var, SCIP_RATIONAL *oldub, SCIP_RATIONAL *newub)
    Definition: lpexact.c:6536
    memory allocation routines
    struct BMS_BlkMem BMS_BLKMEM
    Definition: memory.h:437
    public methods for LP management
    wrapper for rational number arithmetic
    Definition: heur_padm.c:135
    type definitions for managing events
    enum SCIP_LPSolStat SCIP_LPSOLSTAT
    Definition: type_lp.h:52
    type definitions for exact LP management
    type definitions for miscellaneous datastructures
    type definitions for storing and manipulating the main problem
    type definitions for rational numbers
    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