Scippy

    SCIP

    Solving Constraint Integer Programs

    lpi.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 lpi.h
    26 * @ingroup LPIS
    27 * @brief interface methods for specific LP solvers
    28 * @author Tobias Achterberg
    29 * @author Marc Pfetsch
    30 *
    31 */
    32
    33/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    34
    35#ifndef __SCIP_LPI_H__
    36#define __SCIP_LPI_H__
    37
    39#include "lpi/type_lpi.h"
    40#include "scip/def.h"
    41#include "scip/type_message.h"
    42#include "scip/type_retcode.h"
    43
    44#ifdef __cplusplus
    45extern "C" {
    46#endif
    47
    48/**@addtogroup LPIS
    49 *
    50 * This file specifies a generic LP solver interface used by SCIP to create, modify, and solve linear programs of the
    51 * form
    52 *
    53 * ```
    54 * min/max obj * x
    55 * lhs <= A * x <= rhs
    56 * lb <= x <= ub
    57 * ```
    58 *
    59 * and query information about the solution. Although it includes a few SCIP header files, e.g., because it uses SCIP's
    60 * return codes, it can be used independently of any SCIP instance.
    61 *
    62 * The basis status for (column) variables are as follows:
    63 * - If x_j = lb, then j is at its lower bound (SCIP_BASESTAT_LOWER).
    64 * - If x_j = ub, then j is at its lower bound (SCIP_BASESTAT_UPPER).
    65 * - If x_j is in the basis, it has SCIP_BASESTAT_BASIC status.
    66 * - If x_j is free and non-basic, it has SCIP_BASESTAT_ZERO status.
    67 *
    68 * The basis status for (row) slack variables are:
    69 * - If (A * x)_i = lhs, then i is at its lower bound (SCIP_BASESTAT_LOWER).
    70 * - If (A * x)_i = rhs, then i is at its upper bound (SCIP_BASESTAT_UPPER).
    71 * - If the slack variable for row i is basic, it has SCIP_BASESTAT_BASIC status.
    72 *
    73 * If the solvers use their status differently, those status codes have to be corrected.
    74 *
    75 * In the methods accessing information about the (inverse of the) basis matrix, the interface assumes the following
    76 * column-oriented format: slack variables of rows have coefficient +1 and the basis matrix is a regular m times m
    77 * submatrix of (A,I), where m is the number of rows and I is the identity matrix. This means that if, internally, the
    78 * LP solver uses coefficients -1 for some of the slack variables, then every row associated with a slack variable whose
    79 * coefficient is -1 should be negated in order to return the result in terms of the LP interface definition.
    80 *
    81 * The creation of a new LP should always be done in the following ways: Either one can use SCIPlpiLoadColLP() or one
    82 * first adds empty columns or rows. Then the matrix entries can be added by adding columns and rows, respectively.
    83 * Adding matrix entries for a row or column that have not been added before will result in an error.
    84 *
    85 * The handling of the objective limit is as follows, if supported by the LP-solver: If the objective is larger than the
    86 * objective limit for minimization problems or smaller than the objective limit for maximization problems, the solution
    87 * process can be stopped. This naturally occurs in a branch-and-bound process, where the objective limit is set to the
    88 * value of the best solution found so far. If the problem is a minimization problem and we use the dual simplex, the
    89 * dual feasible solutions are maximized. If their value are larger than the objective limit, the process can be
    90 * stopped. In this case, no feasible integer solution can be found in the corresponding branch.
    91 *
    92 * Some LP-solvers also support the opposite setting, but this can easily be checked after the solution process (i.e.,
    93 * for a minimization problem a check whether the optimal value is smaller than the limit). Note that this check can
    94 * only be determined at the end of the optimization. Thus, we do not support this.
    95 *
    96 * @{
    97 */
    98
    99/*
    100 * Miscellaneous Methods
    101 */
    102
    103/**@name Miscellaneous Methods */
    104/**@{ */
    105
    106/** gets name and version of LP solver */
    107SCIP_EXPORT
    108const char* SCIPlpiGetSolverName(
    109 void
    110 );
    111
    112/** gets description of LP solver (developer, webpage, ...) */
    113SCIP_EXPORT
    114const char* SCIPlpiGetSolverDesc(
    115 void
    116 );
    117
    118/** gets pointer for LP solver - use only with great care
    119 *
    120 * The behavior of this function depends on the solver and its use is
    121 * therefore only recommended if you really know what you are
    122 * doing. In general, it returns a pointer to the LP solver object.
    123 */
    124SCIP_EXPORT
    126 SCIP_LPI* lpi /**< pointer to an LP interface structure */
    127 );
    128
    129/** pass integrality information about variables to the solver */
    130SCIP_EXPORT
    132 SCIP_LPI* lpi, /**< pointer to an LP interface structure */
    133 int ncols, /**< length of integrality array */
    134 int* intInfo /**< integrality array (0: continuous, 1: integer). May be NULL iff ncols is 0. */
    135 );
    136
    137/** informs about availability of a primal simplex solving method */
    138SCIP_EXPORT
    140 void
    141 );
    142
    143/** informs about availability of a dual simplex solving method */
    144SCIP_EXPORT
    146 void
    147 );
    148
    149/** informs about availability of a barrier solving method */
    150SCIP_EXPORT
    152 void
    153 );
    154
    155/**@} */
    156
    157
    158
    159
    160/*
    161 * LPI Creation and Destruction Methods
    162 */
    163
    164/**@name LPI Creation and Destruction Methods */
    165/**@{ */
    166
    167/** creates an LP problem object */
    168SCIP_EXPORT
    170 SCIP_LPI** lpi, /**< pointer to an LP interface structure */
    171 SCIP_MESSAGEHDLR* messagehdlr, /**< message handler to use for printing messages, or NULL */
    172 const char* name, /**< problem name */
    173 SCIP_OBJSEN objsen /**< objective sense */
    174 );
    175
    176/** deletes an LP problem object */
    177SCIP_EXPORT
    179 SCIP_LPI** lpi /**< pointer to an LP interface structure */
    180 );
    181
    182/**@} */
    183
    184
    185
    186
    187/*
    188 * Modification Methods
    189 */
    190
    191/**@name Modification Methods */
    192/**@{ */
    193
    194/** copies LP data with column matrix into LP solver */
    195SCIP_EXPORT
    197 SCIP_LPI* lpi, /**< LP interface structure */
    198 SCIP_OBJSEN objsen, /**< objective sense */
    199 int ncols, /**< number of columns */
    200 const SCIP_Real* obj, /**< objective function values of columns */
    201 const SCIP_Real* lb, /**< lower bounds of columns */
    202 const SCIP_Real* ub, /**< upper bounds of columns */
    203 char** colnames, /**< column names, or NULL */
    204 int nrows, /**< number of rows */
    205 const SCIP_Real* lhs, /**< left hand sides of rows */
    206 const SCIP_Real* rhs, /**< right hand sides of rows */
    207 char** rownames, /**< row names, or NULL */
    208 int nnonz, /**< number of nonzero elements in the constraint matrix */
    209 const int* beg, /**< start index of each column in ind- and val-array */
    210 const int* ind, /**< row indices of constraint matrix entries */
    211 const SCIP_Real* val /**< values of constraint matrix entries */
    212 );
    213
    214/** adds columns to the LP
    215 *
    216 * @note ind array is not checked for duplicates, problems may appear if indices are added more than once
    217 */
    218SCIP_EXPORT
    220 SCIP_LPI* lpi, /**< LP interface structure */
    221 int ncols, /**< number of columns to be added */
    222 const SCIP_Real* obj, /**< objective function values of new columns */
    223 const SCIP_Real* lb, /**< lower bounds of new columns */
    224 const SCIP_Real* ub, /**< upper bounds of new columns */
    225 char** colnames, /**< column names, or NULL */
    226 int nnonz, /**< number of nonzero elements to be added to the constraint matrix */
    227 const int* beg, /**< start index of each column in ind- and val-array, or NULL if nnonz == 0 */
    228 const int* ind, /**< row indices of constraint matrix entries, or NULL if nnonz == 0 */
    229 const SCIP_Real* val /**< values of constraint matrix entries, or NULL if nnonz == 0 */
    230 );
    231
    232/** deletes all columns in the given range from LP */
    233SCIP_EXPORT
    235 SCIP_LPI* lpi, /**< LP interface structure */
    236 int firstcol, /**< first column to be deleted */
    237 int lastcol /**< last column to be deleted */
    238 );
    239
    240/** deletes columns from SCIP_LPI; the new position of a column must not be greater that its old position */
    241SCIP_EXPORT
    243 SCIP_LPI* lpi, /**< LP interface structure */
    244 int* dstat /**< deletion status of columns
    245 * input: 1 if column should be deleted, 0 if not
    246 * output: new position of column, -1 if column was deleted */
    247 );
    248
    249/** adds rows to the LP
    250 *
    251 * @note ind array is not checked for duplicates, problems may appear if indices are added more than once
    252 */
    253SCIP_EXPORT
    255 SCIP_LPI* lpi, /**< LP interface structure */
    256 int nrows, /**< number of rows to be added */
    257 const SCIP_Real* lhs, /**< left hand sides of new rows */
    258 const SCIP_Real* rhs, /**< right hand sides of new rows */
    259 char** rownames, /**< row names, or NULL */
    260 int nnonz, /**< number of nonzero elements to be added to the constraint matrix */
    261 const int* beg, /**< start index of each row in ind- and val-array, or NULL if nnonz == 0 */
    262 const int* ind, /**< column indices of constraint matrix entries, or NULL if nnonz == 0 */
    263 const SCIP_Real* val /**< values of constraint matrix entries, or NULL if nnonz == 0 */
    264 );
    265
    266/** deletes all rows in the given range from LP */
    267SCIP_EXPORT
    269 SCIP_LPI* lpi, /**< LP interface structure */
    270 int firstrow, /**< first row to be deleted */
    271 int lastrow /**< last row to be deleted */
    272 );
    273
    274/** deletes rows from SCIP_LPI; the new position of a row must not be greater that its old position */
    275SCIP_EXPORT
    277 SCIP_LPI* lpi, /**< LP interface structure */
    278 int* dstat /**< deletion status of rows
    279 * input: 1 if row should be deleted, 0 if not
    280 * output: new position of row, -1 if row was deleted */
    281 );
    282
    283/** clears the whole LP */
    284SCIP_EXPORT
    286 SCIP_LPI* lpi /**< LP interface structure */
    287 );
    288
    289/** changes lower and upper bounds of columns */
    290SCIP_EXPORT
    292 SCIP_LPI* lpi, /**< LP interface structure */
    293 int ncols, /**< number of columns to change bounds for */
    294 const int* ind, /**< column indices or NULL if ncols is zero */
    295 const SCIP_Real* lb, /**< values for the new lower bounds or NULL if ncols is zero */
    296 const SCIP_Real* ub /**< values for the new upper bounds or NULL if ncols is zero */
    297 );
    298
    299/** changes left and right hand sides of rows */
    300SCIP_EXPORT
    302 SCIP_LPI* lpi, /**< LP interface structure */
    303 int nrows, /**< number of rows to change sides for */
    304 const int* ind, /**< row indices */
    305 const SCIP_Real* lhs, /**< new values for left hand sides */
    306 const SCIP_Real* rhs /**< new values for right hand sides */
    307 );
    308
    309/** changes a single coefficient */
    310SCIP_EXPORT
    312 SCIP_LPI* lpi, /**< LP interface structure */
    313 int row, /**< row number of coefficient to change */
    314 int col, /**< column number of coefficient to change */
    315 SCIP_Real newval /**< new value of coefficient */
    316 );
    317
    318/** changes the objective sense */
    319SCIP_EXPORT
    321 SCIP_LPI* lpi, /**< LP interface structure */
    322 SCIP_OBJSEN objsen /**< new objective sense */
    323 );
    324
    325/** changes objective values of columns in the LP */
    326SCIP_EXPORT
    328 SCIP_LPI* lpi, /**< LP interface structure */
    329 int ncols, /**< number of columns to change objective value for */
    330 const int* ind, /**< column indices to change objective value for */
    331 const SCIP_Real* obj /**< new objective values for columns */
    332 );
    333
    334/** multiplies a row with a non-zero scalar; for negative scalars, the row's sense is switched accordingly */
    335SCIP_EXPORT
    337 SCIP_LPI* lpi, /**< LP interface structure */
    338 int row, /**< row number to scale */
    339 SCIP_Real scaleval /**< scaling multiplier */
    340 );
    341
    342/** multiplies a column with a non-zero scalar; the objective value is multiplied with the scalar, and the bounds
    343 * are divided by the scalar; for negative scalars, the column's bounds are switched
    344 */
    345SCIP_EXPORT
    347 SCIP_LPI* lpi, /**< LP interface structure */
    348 int col, /**< column number to scale */
    349 SCIP_Real scaleval /**< scaling multiplier */
    350 );
    351
    352/**@} */
    353
    354
    355
    356
    357/*
    358 * Data Accessing Methods
    359 */
    360
    361/**@name Data Accessing Methods */
    362/**@{ */
    363
    364/** gets the number of rows in the LP */
    365SCIP_EXPORT
    367 SCIP_LPI* lpi, /**< LP interface structure */
    368 int* nrows /**< pointer to store the number of rows */
    369 );
    370
    371/** gets the number of columns in the LP */
    372SCIP_EXPORT
    374 SCIP_LPI* lpi, /**< LP interface structure */
    375 int* ncols /**< pointer to store the number of cols */
    376 );
    377
    378/** gets the objective sense of the LP */
    379SCIP_EXPORT
    381 SCIP_LPI* lpi, /**< LP interface structure */
    382 SCIP_OBJSEN* objsen /**< pointer to store objective sense */
    383 );
    384
    385/** gets the number of nonzero elements in the LP constraint matrix */
    386SCIP_EXPORT
    388 SCIP_LPI* lpi, /**< LP interface structure */
    389 int* nnonz /**< pointer to store the number of nonzeros */
    390 );
    391
    392/** gets columns from LP problem object; the arrays have to be large enough to store all values;
    393 * Either both, lb and ub, have to be NULL, or both have to be non-NULL,
    394 * either nnonz, beg, ind, and val have to be NULL, or all of them have to be non-NULL.
    395 */
    396SCIP_EXPORT
    398 SCIP_LPI* lpi, /**< LP interface structure */
    399 int firstcol, /**< first column to get from LP */
    400 int lastcol, /**< last column to get from LP */
    401 SCIP_Real* lb, /**< buffer to store the lower bound vector, or NULL */
    402 SCIP_Real* ub, /**< buffer to store the upper bound vector, or NULL */
    403 int* nnonz, /**< pointer to store the number of nonzero elements returned, or NULL */
    404 int* beg, /**< buffer to store start index of each column in ind- and val-array, or NULL */
    405 int* ind, /**< buffer to store row indices of constraint matrix entries, or NULL */
    406 SCIP_Real* val /**< buffer to store values of constraint matrix entries, or NULL */
    407 );
    408
    409/** gets rows from LP problem object; the arrays have to be large enough to store all values.
    410 * Either both, lhs and rhs, have to be NULL, or both have to be non-NULL,
    411 * either nnonz, beg, ind, and val have to be NULL, or all of them have to be non-NULL.
    412 */
    413SCIP_EXPORT
    415 SCIP_LPI* lpi, /**< LP interface structure */
    416 int firstrow, /**< first row to get from LP */
    417 int lastrow, /**< last row to get from LP */
    418 SCIP_Real* lhs, /**< buffer to store left hand side vector, or NULL */
    419 SCIP_Real* rhs, /**< buffer to store right hand side vector, or NULL */
    420 int* nnonz, /**< pointer to store the number of nonzero elements returned, or NULL */
    421 int* beg, /**< buffer to store start index of each row in ind- and val-array, or NULL */
    422 int* ind, /**< buffer to store column indices of constraint matrix entries, or NULL */
    423 SCIP_Real* val /**< buffer to store values of constraint matrix entries, or NULL */
    424 );
    425
    426/** gets column names */
    427SCIP_EXPORT
    429 SCIP_LPI* lpi, /**< LP interface structure */
    430 int firstcol, /**< first column to get name from LP */
    431 int lastcol, /**< last column to get name from LP */
    432 char** colnames, /**< pointers to column names (of size at least lastcol-firstcol+1) or NULL if namestoragesize is zero */
    433 char* namestorage, /**< storage for col names or NULL if namestoragesize is zero */
    434 int namestoragesize, /**< size of namestorage (if 0, -storageleft returns the storage needed) */
    435 int* storageleft /**< amount of storage left (if < 0 the namestorage was not big enough) or NULL if namestoragesize is zero */
    436 );
    437
    438/** gets row names */
    439SCIP_EXPORT
    441 SCIP_LPI* lpi, /**< LP interface structure */
    442 int firstrow, /**< first row to get name from LP */
    443 int lastrow, /**< last row to get name from LP */
    444 char** rownames, /**< pointers to row names (of size at least lastrow-firstrow+1) or NULL if namestoragesize is zero */
    445 char* namestorage, /**< storage for row names or NULL if namestoragesize is zero */
    446 int namestoragesize, /**< size of namestorage (if 0, -storageleft returns the storage needed) */
    447 int* storageleft /**< amount of storage left (if < 0 the namestorage was not big enough) or NULL if namestoragesize is zero */
    448 );
    449
    450/** gets objective coefficients from LP problem object */
    451SCIP_EXPORT
    453 SCIP_LPI* lpi, /**< LP interface structure */
    454 int firstcol, /**< first column to get objective coefficient for */
    455 int lastcol, /**< last column to get objective coefficient for */
    456 SCIP_Real* vals /**< array to store objective coefficients */
    457 );
    458
    459/** gets current bounds from LP problem object */
    460SCIP_EXPORT
    462 SCIP_LPI* lpi, /**< LP interface structure */
    463 int firstcol, /**< first column to get bounds for */
    464 int lastcol, /**< last column to get bounds for */
    465 SCIP_Real* lbs, /**< array to store lower bound values, or NULL */
    466 SCIP_Real* ubs /**< array to store upper bound values, or NULL */
    467 );
    468
    469/** gets current row sides from LP problem object */
    470SCIP_EXPORT
    472 SCIP_LPI* lpi, /**< LP interface structure */
    473 int firstrow, /**< first row to get sides for */
    474 int lastrow, /**< last row to get sides for */
    475 SCIP_Real* lhss, /**< array to store left hand side values, or NULL */
    476 SCIP_Real* rhss /**< array to store right hand side values, or NULL */
    477 );
    478
    479/** gets a single coefficient */
    480SCIP_EXPORT
    482 SCIP_LPI* lpi, /**< LP interface structure */
    483 int row, /**< row number of coefficient */
    484 int col, /**< column number of coefficient */
    485 SCIP_Real* val /**< pointer to store the value of the coefficient */
    486 );
    487
    488/**@} */
    489
    490
    491
    492
    493/*
    494 * Solving Methods
    495 */
    496
    497/**@name Solving Methods */
    498/**@{ */
    499
    500/** calls primal simplex to solve the LP */
    501SCIP_EXPORT
    503 SCIP_LPI* lpi /**< LP interface structure */
    504 );
    505
    506/** calls dual simplex to solve the LP */
    507SCIP_EXPORT
    509 SCIP_LPI* lpi /**< LP interface structure */
    510 );
    511
    512/** calls barrier or interior point algorithm to solve the LP with crossover to simplex basis */
    513SCIP_EXPORT
    515 SCIP_LPI* lpi, /**< LP interface structure */
    516 SCIP_Bool crossover /**< perform crossover */
    517 );
    518
    519/** start strong branching - call before any strong branching */
    520SCIP_EXPORT
    522 SCIP_LPI* lpi /**< LP interface structure */
    523 );
    524
    525/** end strong branching - call after any strong branching */
    526SCIP_EXPORT
    528 SCIP_LPI* lpi /**< LP interface structure */
    529 );
    530
    531/** performs strong branching iterations on one @b fractional candidate */
    532SCIP_EXPORT
    534 SCIP_LPI* lpi, /**< LP interface structure */
    535 int col, /**< column to apply strong branching on */
    536 SCIP_Real psol, /**< fractional current primal solution value of column */
    537 int itlim, /**< iteration limit for strong branchings */
    538 SCIP_Real* down, /**< stores dual bound after branching column down */
    539 SCIP_Real* up, /**< stores dual bound after branching column up */
    540 SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound;
    541 * otherwise, it can only be used as an estimate value */
    542 SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound;
    543 * otherwise, it can only be used as an estimate value */
    544 int* iter /**< stores total number of strong branching iterations, or -1; may be NULL */
    545 );
    546
    547/** performs strong branching iterations on given @b fractional candidates */
    548SCIP_EXPORT
    550 SCIP_LPI* lpi, /**< LP interface structure */
    551 int* cols, /**< columns to apply strong branching on */
    552 int ncols, /**< number of columns */
    553 SCIP_Real* psols, /**< fractional current primal solution values of columns */
    554 int itlim, /**< iteration limit for strong branchings */
    555 SCIP_Real* down, /**< stores dual bounds after branching columns down */
    556 SCIP_Real* up, /**< stores dual bounds after branching columns up */
    557 SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds;
    558 * otherwise, they can only be used as an estimate values */
    559 SCIP_Bool* upvalid, /**< stores whether the returned up values are a valid dual bounds;
    560 * otherwise, they can only be used as an estimate values */
    561 int* iter /**< stores total number of strong branching iterations, or -1; may be NULL */
    562 );
    563
    564/** performs strong branching iterations on one candidate with @b integral value */
    565SCIP_EXPORT
    567 SCIP_LPI* lpi, /**< LP interface structure */
    568 int col, /**< column to apply strong branching on */
    569 SCIP_Real psol, /**< current integral primal solution value of column */
    570 int itlim, /**< iteration limit for strong branchings */
    571 SCIP_Real* down, /**< stores dual bound after branching column down */
    572 SCIP_Real* up, /**< stores dual bound after branching column up */
    573 SCIP_Bool* downvalid, /**< stores whether the returned down value is a valid dual bound;
    574 * otherwise, it can only be used as an estimate value */
    575 SCIP_Bool* upvalid, /**< stores whether the returned up value is a valid dual bound;
    576 * otherwise, it can only be used as an estimate value */
    577 int* iter /**< stores total number of strong branching iterations, or -1; may be NULL */
    578 );
    579
    580/** performs strong branching iterations on given candidates with @b integral values */
    581SCIP_EXPORT
    583 SCIP_LPI* lpi, /**< LP interface structure */
    584 int* cols, /**< columns to apply strong branching on */
    585 int ncols, /**< number of columns */
    586 SCIP_Real* psols, /**< current integral primal solution values of columns */
    587 int itlim, /**< iteration limit for strong branchings */
    588 SCIP_Real* down, /**< stores dual bounds after branching columns down */
    589 SCIP_Real* up, /**< stores dual bounds after branching columns up */
    590 SCIP_Bool* downvalid, /**< stores whether the returned down values are valid dual bounds;
    591 * otherwise, they can only be used as an estimate values */
    592 SCIP_Bool* upvalid, /**< stores whether the returned up values are a valid dual bounds;
    593 * otherwise, they can only be used as an estimate values */
    594 int* iter /**< stores total number of strong branching iterations, or -1; may be NULL */
    595 );
    596/**@} */
    597
    598
    599
    600
    601/*
    602 * Solution Information Methods
    603 */
    604
    605/**@name Solution Information Methods */
    606/**@{ */
    607
    608/** returns whether a solve method was called after the last modification of the LP */
    609SCIP_EXPORT
    611 SCIP_LPI* lpi /**< LP interface structure */
    612 );
    613
    614/** gets information about primal and dual feasibility of the current LP solution
    615 *
    616 * The feasibility information is with respect to the last solving call and it is only relevant if SCIPlpiWasSolved()
    617 * returns true. If the LP is changed, this information might be invalidated.
    618 *
    619 * Note that @p primalfeasible and @p dualfeasible should only return true if the solver has proved the respective LP to
    620 * be feasible. Thus, the return values should be equal to the values of SCIPlpiIsPrimalFeasible() and
    621 * SCIPlpiIsDualFeasible(), respectively. Note that if feasibility cannot be proved, they should return false (even if
    622 * the problem might actually be feasible).
    623 */
    624SCIP_EXPORT
    626 SCIP_LPI* lpi, /**< LP interface structure */
    627 SCIP_Bool* primalfeasible, /**< pointer to store primal feasibility status */
    628 SCIP_Bool* dualfeasible /**< pointer to store dual feasibility status */
    629 );
    630
    631/** returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point);
    632 * this does not necessarily mean, that the solver knows and can return the primal ray
    633 */
    634SCIP_EXPORT
    636 SCIP_LPI* lpi /**< LP interface structure */
    637 );
    638
    639/** returns TRUE iff LP is proven to have a primal unbounded ray (but not necessary a primal feasible point),
    640 * and the solver knows and can return the primal ray
    641 */
    642SCIP_EXPORT
    644 SCIP_LPI* lpi /**< LP interface structure */
    645 );
    646
    647/** returns TRUE iff LP is proven to be primal unbounded */
    648SCIP_EXPORT
    650 SCIP_LPI* lpi /**< LP interface structure */
    651 );
    652
    653/** returns TRUE iff LP is proven to be primal infeasible */
    654SCIP_EXPORT
    656 SCIP_LPI* lpi /**< LP interface structure */
    657 );
    658
    659/** returns TRUE iff LP is proven to be primal feasible */
    660SCIP_EXPORT
    662 SCIP_LPI* lpi /**< LP interface structure */
    663 );
    664
    665/** returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point);
    666 * this does not necessarily mean, that the solver knows and can return the dual ray
    667 */
    668SCIP_EXPORT
    670 SCIP_LPI* lpi /**< LP interface structure */
    671 );
    672
    673/** returns TRUE iff LP is proven to have a dual unbounded ray (but not necessary a dual feasible point),
    674 * and the solver knows and can return the dual ray
    675 */
    676SCIP_EXPORT
    678 SCIP_LPI* lpi /**< LP interface structure */
    679 );
    680
    681/** returns TRUE iff LP is proven to be dual unbounded */
    682SCIP_EXPORT
    684 SCIP_LPI* lpi /**< LP interface structure */
    685 );
    686
    687/** returns TRUE iff LP is proven to be dual infeasible */
    688SCIP_EXPORT
    690 SCIP_LPI* lpi /**< LP interface structure */
    691 );
    692
    693/** returns TRUE iff LP is proven to be dual feasible */
    694SCIP_EXPORT
    696 SCIP_LPI* lpi /**< LP interface structure */
    697 );
    698
    699/** returns TRUE iff LP was solved to optimality */
    700SCIP_EXPORT
    702 SCIP_LPI* lpi /**< LP interface structure */
    703 );
    704
    705/** returns TRUE iff current LP solution is stable
    706 *
    707 * This function should return true if the solution is reliable, i.e., feasible and optimal (or proven
    708 * infeasible/unbounded) with respect to the original problem. The optimality status might be with respect to a scaled
    709 * version of the problem, but the solution might not be feasible to the unscaled original problem; in this case,
    710 * SCIPlpiIsStable() should return false.
    711 */
    712SCIP_EXPORT
    714 SCIP_LPI* lpi /**< LP interface structure */
    715 );
    716
    717/** returns TRUE iff the objective limit was reached */
    718SCIP_EXPORT
    720 SCIP_LPI* lpi /**< LP interface structure */
    721 );
    722
    723/** returns TRUE iff the iteration limit was reached */
    724SCIP_EXPORT
    726 SCIP_LPI* lpi /**< LP interface structure */
    727 );
    728
    729/** returns TRUE iff the time limit was reached */
    730SCIP_EXPORT
    732 SCIP_LPI* lpi /**< LP interface structure */
    733 );
    734
    735/** returns the internal solution status of the solver */
    736SCIP_EXPORT
    738 SCIP_LPI* lpi /**< LP interface structure */
    739 );
    740
    741/** tries to reset the internal status of the LP solver in order to ignore an instability of the last solving call */
    742SCIP_EXPORT
    744 SCIP_LPI* lpi, /**< LP interface structure */
    745 SCIP_Bool* success /**< pointer to store, whether the instability could be ignored */
    746 );
    747
    748/** gets objective value of solution */
    749SCIP_EXPORT
    751 SCIP_LPI* lpi, /**< LP interface structure */
    752 SCIP_Real* objval /**< stores the objective value */
    753 );
    754
    755/** gets primal and dual solution vectors for feasible LPs
    756 *
    757 * Before calling this function, the caller must ensure that the LP has been solved to optimality, i.e., that
    758 * SCIPlpiIsOptimal() returns true.
    759 */
    760SCIP_EXPORT
    762 SCIP_LPI* lpi, /**< LP interface structure */
    763 SCIP_Real* objval, /**< stores the objective value, may be NULL if not needed */
    764 SCIP_Real* primsol, /**< primal solution vector, may be NULL if not needed */
    765 SCIP_Real* dualsol, /**< dual solution vector, may be NULL if not needed */
    766 SCIP_Real* activity, /**< row activity vector, may be NULL if not needed */
    767 SCIP_Real* redcost /**< reduced cost vector, may be NULL if not needed */
    768 );
    769
    770/** gets primal ray for unbounded LPs */
    771SCIP_EXPORT
    773 SCIP_LPI* lpi, /**< LP interface structure */
    774 SCIP_Real* ray /**< primal ray */
    775 );
    776
    777/** gets dual Farkas proof for infeasibility */
    778SCIP_EXPORT
    780 SCIP_LPI* lpi, /**< LP interface structure */
    781 SCIP_Real* dualfarkas /**< dual Farkas row multipliers */
    782 );
    783
    784/** gets the number of LP iterations of the last solve call */
    785SCIP_EXPORT
    787 SCIP_LPI* lpi, /**< LP interface structure */
    788 int* iterations /**< pointer to store the number of iterations of the last solve call */
    789 );
    790
    791/** gets information about the quality of an LP solution
    792 *
    793 * Such information is usually only available, if also a (maybe not optimal) solution is available.
    794 * The LPI should return SCIP_INVALID for @p quality, if the requested quantity is not available.
    795 */
    796SCIP_EXPORT
    798 SCIP_LPI* lpi, /**< LP interface structure */
    799 SCIP_LPSOLQUALITY qualityindicator, /**< indicates which quality should be returned */
    800 SCIP_Real* quality /**< pointer to store quality number */
    801 );
    802
    803/**@} */
    804
    805
    806
    807
    808/*
    809 * LP Basis Methods
    810 */
    811
    812/**@name LP Basis Methods */
    813/**@{ */
    814
    815/** gets current basis status for columns and rows; arrays must be large enough to store the basis status */
    816SCIP_EXPORT
    818 SCIP_LPI* lpi, /**< LP interface structure */
    819 int* cstat, /**< array to store column basis status, or NULL */
    820 int* rstat /**< array to store row basis status, or NULL */
    821 );
    822
    823/** sets current basis status for columns and rows */
    824SCIP_EXPORT
    826 SCIP_LPI* lpi, /**< LP interface structure */
    827 const int* cstat, /**< array with column basis status */
    828 const int* rstat /**< array with row basis status */
    829 );
    830
    831/** returns the indices of the basic columns and rows; basic column n gives value n, basic row m gives value -1-m */
    832SCIP_EXPORT
    834 SCIP_LPI* lpi, /**< LP interface structure */
    835 int* bind /**< pointer to store basis indices ready to keep number of rows entries */
    836 );
    837
    838/** get row of inverse basis matrix B^-1
    839 *
    840 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
    841 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
    842 * see also the explanation in lpi.h.
    843 */
    844SCIP_EXPORT
    846 SCIP_LPI* lpi, /**< LP interface structure */
    847 int r, /**< row number */
    848 SCIP_Real* coef, /**< pointer to store the coefficients of the row */
    849 int* inds, /**< array to store the non-zero indices, or NULL */
    850 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    851 * (-1: if we do not store sparsity information) */
    852 );
    853
    854/** get column of inverse basis matrix B^-1
    855 *
    856 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
    857 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
    858 * see also the explanation in lpi.h.
    859 */
    860SCIP_EXPORT
    862 SCIP_LPI* lpi, /**< LP interface structure */
    863 int c, /**< column number of B^-1; this is NOT the number of the column in the LP;
    864 * you have to call SCIPlpiGetBasisInd() to get the array which links the
    865 * B^-1 column numbers to the row and column numbers of the LP!
    866 * c must be between 0 and nrows-1, since the basis has the size
    867 * nrows * nrows */
    868 SCIP_Real* coef, /**< pointer to store the coefficients of the column */
    869 int* inds, /**< array to store the non-zero indices, or NULL */
    870 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    871 * (-1: if we do not store sparsity information) */
    872 );
    873
    874/** get row of inverse basis matrix times constraint matrix B^-1 * A
    875 *
    876 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
    877 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
    878 * see also the explanation in lpi.h.
    879 */
    880SCIP_EXPORT
    882 SCIP_LPI* lpi, /**< LP interface structure */
    883 int r, /**< row number */
    884 const SCIP_Real* binvrow, /**< row in (A_B)^-1 from prior call to SCIPlpiGetBInvRow(), or NULL */
    885 SCIP_Real* coef, /**< vector to return coefficients of the row */
    886 int* inds, /**< array to store the non-zero indices, or NULL */
    887 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    888 * (-1: if we do not store sparsity information) */
    889 );
    890
    891/** get column of inverse basis matrix times constraint matrix B^-1 * A
    892 *
    893 * @note The LP interface defines slack variables to have coefficient +1. This means that if, internally, the LP solver
    894 * uses a -1 coefficient, then rows associated with slacks variables whose coefficient is -1, should be negated;
    895 * see also the explanation in lpi.h.
    896 */
    897SCIP_EXPORT
    899 SCIP_LPI* lpi, /**< LP interface structure */
    900 int c, /**< column number */
    901 SCIP_Real* coef, /**< vector to return coefficients of the column */
    902 int* inds, /**< array to store the non-zero indices, or NULL */
    903 int* ninds /**< pointer to store the number of non-zero indices, or NULL
    904 * (-1: if we do not store sparsity information) */
    905 );
    906
    907/**@} */
    908
    909
    910
    911
    912/*
    913 * LPi State Methods
    914 */
    915
    916/**@name LPi State Methods */
    917/**@{ */
    918
    919/** stores LPi state (like basis information) into lpistate object */
    920SCIP_EXPORT
    922 SCIP_LPI* lpi, /**< LP interface structure */
    923 BMS_BLKMEM* blkmem, /**< block memory */
    924 SCIP_LPISTATE** lpistate /**< pointer to LPi state information (like basis information) */
    925 );
    926
    927/** loads LPi state (like basis information) into solver; note that the LP might have been extended with additional
    928 * columns and rows since the state was stored with SCIPlpiGetState()
    929 */
    930SCIP_EXPORT
    932 SCIP_LPI* lpi, /**< LP interface structure */
    933 BMS_BLKMEM* blkmem, /**< block memory */
    934 const SCIP_LPISTATE* lpistate /**< LPi state information (like basis information), or NULL */
    935 );
    936
    937/** clears current LPi state (like basis information) of the solver */
    938SCIP_EXPORT
    940 SCIP_LPI* lpi /**< LP interface structure */
    941 );
    942
    943/** frees LPi state information */
    944SCIP_EXPORT
    946 SCIP_LPI* lpi, /**< LP interface structure */
    947 BMS_BLKMEM* blkmem, /**< block memory */
    948 SCIP_LPISTATE** lpistate /**< pointer to LPi state information (like basis information) */
    949 );
    950
    951/** checks whether the given LPi state contains simplex basis information */
    952SCIP_EXPORT
    954 SCIP_LPI* lpi, /**< LP interface structure */
    955 SCIP_LPISTATE* lpistate /**< LPi state information (like basis information) */
    956 );
    957
    958/** reads LPi state (like basis information from a file */
    959SCIP_EXPORT
    961 SCIP_LPI* lpi, /**< LP interface structure */
    962 const char* fname /**< file name */
    963 );
    964
    965/** writes LPi state (i.e. basis information) to a file */
    966SCIP_EXPORT
    968 SCIP_LPI* lpi, /**< LP interface structure */
    969 const char* fname /**< file name */
    970 );
    971
    972/**@} */
    973
    974
    975/*
    976 * LPi Pricing Norms Methods
    977 */
    978
    979/**@name LPi Pricing Norms Methods */
    980/**@{ */
    981
    982/** stores LPi pricing norms into lpinorms object */
    984 SCIP_LPI* lpi, /**< LP interface structure */
    985 BMS_BLKMEM* blkmem, /**< block memory */
    986 SCIP_LPINORMS** lpinorms /**< pointer to LPi pricing norms information */
    987 );
    988
    989/** loads LPi pricing norms into solver; note that the LP might have been extended with additional
    990 * columns and rows since the norms were stored with SCIPlpiGetNorms()
    991 */
    993 SCIP_LPI* lpi, /**< LP interface structure */
    994 BMS_BLKMEM* blkmem, /**< block memory */
    995 const SCIP_LPINORMS* lpinorms /**< LPi pricing norms information, or NULL */
    996 );
    997
    998/** frees LPi pricing norms information */
    1000 SCIP_LPI* lpi, /**< LP interface structure */
    1001 BMS_BLKMEM* blkmem, /**< block memory */
    1002 SCIP_LPINORMS** lpinorms /**< pointer to LPi pricing norms information, or NULL */
    1003 );
    1004
    1005
    1006/**@} */
    1007
    1008
    1009
    1010
    1011/*
    1012 * Parameter Methods
    1013 */
    1014
    1015/**@name Parameter Methods */
    1016/**@{ */
    1017
    1018/** gets integer parameter of LP */
    1019SCIP_EXPORT
    1021 SCIP_LPI* lpi, /**< LP interface structure */
    1022 SCIP_LPPARAM type, /**< parameter number */
    1023 int* ival /**< buffer to store the parameter value */
    1024 );
    1025
    1026/** sets integer parameter of LP */
    1027SCIP_EXPORT
    1029 SCIP_LPI* lpi, /**< LP interface structure */
    1030 SCIP_LPPARAM type, /**< parameter number */
    1031 int ival /**< parameter value */
    1032 );
    1033
    1034/** gets floating point parameter of LP */
    1035SCIP_EXPORT
    1037 SCIP_LPI* lpi, /**< LP interface structure */
    1038 SCIP_LPPARAM type, /**< parameter number */
    1039 SCIP_Real* dval /**< buffer to store the parameter value */
    1040 );
    1041
    1042/** sets floating point parameter of LP */
    1043SCIP_EXPORT
    1045 SCIP_LPI* lpi, /**< LP interface structure */
    1046 SCIP_LPPARAM type, /**< parameter number */
    1047 SCIP_Real dval /**< parameter value */
    1048 );
    1049
    1050/** interrupts the currently ongoing lp solve or disables the interrupt */
    1051SCIP_EXPORT
    1053 SCIP_LPI* lpi, /**< LP interface structure */
    1054 SCIP_Bool interrupt /**< TRUE if interrupt should be set, FALSE if it should be disabled */
    1055 );
    1056
    1057/**@} */
    1058
    1059
    1060
    1061
    1062/*
    1063 * Numerical Methods
    1064 */
    1065
    1066/**@name Numerical Methods */
    1067/**@{ */
    1068
    1069/** returns value treated as infinity in the LP solver */
    1070SCIP_EXPORT
    1072 SCIP_LPI* lpi /**< LP interface structure */
    1073 );
    1074
    1075/** checks if given value is treated as infinity in the LP solver */
    1076SCIP_EXPORT
    1078 SCIP_LPI* lpi, /**< LP interface structure */
    1079 SCIP_Real val /**< value to be checked for infinity */
    1080 );
    1081
    1082/**@} */
    1083
    1084
    1085
    1086
    1087/*
    1088 * File Interface Methods
    1089 */
    1090
    1091/**@name File Interface Methods */
    1092/**@{ */
    1093
    1094/** reads LP from a file */
    1095SCIP_EXPORT
    1097 SCIP_LPI* lpi, /**< LP interface structure */
    1098 const char* fname /**< file name */
    1099 );
    1100
    1101/** writes LP to a file */
    1102SCIP_EXPORT
    1104 SCIP_LPI* lpi, /**< LP interface structure */
    1105 const char* fname /**< file name */
    1106 );
    1107
    1108/**@} */
    1109
    1110/**@} */
    1111
    1112
    1113#ifdef __cplusplus
    1114}
    1115#endif
    1116
    1117#endif
    SCIP_Real * r
    Definition: circlepacking.c:59
    common defines and data types used in all packages of SCIP
    #define SCIP_Bool
    Definition: def.h:91
    #define SCIP_Real
    Definition: def.h:156
    SCIP_RETCODE SCIPlpiChgSides(SCIP_LPI *lpi, int nrows, const int *ind, const SCIP_Real *lhs, const SCIP_Real *rhs)
    Definition: lpi_clp.cpp:1179
    SCIP_RETCODE SCIPlpiSetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPISTATE *lpistate)
    Definition: lpi_clp.cpp:3457
    SCIP_RETCODE SCIPlpiGetBInvACol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)
    Definition: lpi_clp.cpp:3377
    SCIP_RETCODE SCIPlpiGetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real *dval)
    Definition: lpi_clp.cpp:3824
    SCIP_Real SCIPlpiInfinity(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:3947
    SCIP_Bool SCIPlpiIsObjlimExc(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2718
    SCIP_RETCODE SCIPlpiChgObjsen(SCIP_LPI *lpi, SCIP_OBJSEN objsen)
    Definition: lpi_clp.cpp:1232
    SCIP_Bool SCIPlpiIsInfinity(SCIP_LPI *lpi, SCIP_Real val)
    Definition: lpi_clp.cpp:3959
    SCIP_RETCODE SCIPlpiClear(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:1076
    SCIP_RETCODE SCIPlpiClearState(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:3515
    SCIP_Bool SCIPlpiExistsDualRay(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2565
    SCIP_Bool SCIPlpiExistsPrimalRay(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2478
    SCIP_RETCODE SCIPlpiGetBase(SCIP_LPI *lpi, int *cstat, int *rstat)
    Definition: lpi_clp.cpp:2995
    SCIP_RETCODE SCIPlpiReadState(SCIP_LPI *lpi, const char *fname)
    Definition: lpi_clp.cpp:3560
    SCIP_RETCODE SCIPlpiAddRows(SCIP_LPI *lpi, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **rownames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)
    Definition: lpi_clp.cpp:920
    SCIP_RETCODE SCIPlpiGetPrimalRay(SCIP_LPI *lpi, SCIP_Real *ray)
    Definition: lpi_clp.cpp:2860
    SCIP_RETCODE SCIPlpiGetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int *ival)
    Definition: lpi_clp.cpp:3676
    SCIP_RETCODE SCIPlpiWriteLP(SCIP_LPI *lpi, const char *fname)
    Definition: lpi_clp.cpp:4029
    SCIP_RETCODE SCIPlpiSetIntegralityInformation(SCIP_LPI *lpi, int ncols, int *intInfo)
    Definition: lpi_clp.cpp:480
    SCIP_Bool SCIPlpiIsDualInfeasible(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2623
    SCIP_RETCODE SCIPlpiSetRealpar(SCIP_LPI *lpi, SCIP_LPPARAM type, SCIP_Real dval)
    Definition: lpi_clp.cpp:3861
    SCIP_RETCODE SCIPlpiStrongbranchFrac(SCIP_LPI *lpi, int col, SCIP_Real psol, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)
    Definition: lpi_clp.cpp:2311
    SCIP_RETCODE SCIPlpiSetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, const SCIP_LPINORMS *lpinorms)
    Definition: lpi_clp.cpp:3638
    SCIP_RETCODE SCIPlpiGetNNonz(SCIP_LPI *lpi, int *nnonz)
    Definition: lpi_clp.cpp:1465
    SCIP_Bool SCIPlpiHasPrimalSolve(void)
    Definition: lpi_clp.cpp:494
    SCIP_RETCODE SCIPlpiStrongbranchInt(SCIP_LPI *lpi, int col, SCIP_Real psol, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)
    Definition: lpi_clp.cpp:2357
    SCIP_RETCODE SCIPlpiGetBounds(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lbs, SCIP_Real *ubs)
    Definition: lpi_clp.cpp:1733
    SCIP_Bool SCIPlpiHasBarrierSolve(void)
    Definition: lpi_clp.cpp:510
    SCIP_RETCODE SCIPlpiGetDualfarkas(SCIP_LPI *lpi, SCIP_Real *dualfarkas)
    Definition: lpi_clp.cpp:2885
    SCIP_RETCODE SCIPlpiGetObjval(SCIP_LPI *lpi, SCIP_Real *objval)
    Definition: lpi_clp.cpp:2794
    SCIP_RETCODE SCIPlpiScaleCol(SCIP_LPI *lpi, int col, SCIP_Real scaleval)
    Definition: lpi_clp.cpp:1352
    int SCIPlpiGetInternalStatus(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2780
    SCIP_RETCODE SCIPlpiStartStrongbranch(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2034
    SCIP_RETCODE SCIPlpiGetSolFeasibility(SCIP_LPI *lpi, SCIP_Bool *primalfeasible, SCIP_Bool *dualfeasible)
    Definition: lpi_clp.cpp:2433
    SCIP_RETCODE SCIPlpiFreeNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
    Definition: lpi_clp.cpp:3651
    SCIP_Bool SCIPlpiIsIterlimExc(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2748
    SCIP_RETCODE SCIPlpiChgBounds(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *lb, const SCIP_Real *ub)
    Definition: lpi_clp.cpp:1096
    SCIP_Bool SCIPlpiIsPrimalUnbounded(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2516
    SCIP_RETCODE SCIPlpiIgnoreInstability(SCIP_LPI *lpi, SCIP_Bool *success)
    Definition: lpi_clp.cpp:1669
    SCIP_RETCODE SCIPlpiWriteState(SCIP_LPI *lpi, const char *fname)
    Definition: lpi_clp.cpp:3580
    SCIP_RETCODE SCIPlpiFree(SCIP_LPI **lpi)
    Definition: lpi_clp.cpp:643
    SCIP_RETCODE SCIPlpiStrongbranchesFrac(SCIP_LPI *lpi, int *cols, int ncols, SCIP_Real *psols, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)
    Definition: lpi_clp.cpp:2332
    SCIP_RETCODE SCIPlpiGetCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real *val)
    Definition: lpi_clp.cpp:1799
    SCIP_Bool SCIPlpiIsPrimalFeasible(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2549
    SCIP_RETCODE SCIPlpiReadLP(SCIP_LPI *lpi, const char *fname)
    Definition: lpi_clp.cpp:4000
    SCIP_RETCODE SCIPlpiGetRealSolQuality(SCIP_LPI *lpi, SCIP_LPSOLQUALITY qualityindicator, SCIP_Real *quality)
    Definition: lpi_clp.cpp:2968
    SCIP_Bool SCIPlpiIsDualFeasible(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2637
    SCIP_RETCODE SCIPlpiGetNorms(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPINORMS **lpinorms)
    Definition: lpi_clp.cpp:3620
    SCIP_Bool SCIPlpiIsTimelimExc(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2764
    SCIP_Bool SCIPlpiHasStateBasis(SCIP_LPI *lpi, SCIP_LPISTATE *lpistate)
    Definition: lpi_clp.cpp:3550
    SCIP_RETCODE SCIPlpiSetIntpar(SCIP_LPI *lpi, SCIP_LPPARAM type, int ival)
    Definition: lpi_clp.cpp:3720
    const char * SCIPlpiGetSolverName(void)
    Definition: lpi_clp.cpp:454
    SCIP_RETCODE SCIPlpiSetBase(SCIP_LPI *lpi, const int *cstat, const int *rstat)
    Definition: lpi_clp.cpp:3095
    SCIP_Bool SCIPlpiHasPrimalRay(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2496
    SCIP_RETCODE SCIPlpiGetBInvRow(SCIP_LPI *lpi, int r, SCIP_Real *coef, int *inds, int *ninds)
    Definition: lpi_clp.cpp:3269
    SCIP_RETCODE SCIPlpiDelRows(SCIP_LPI *lpi, int firstrow, int lastrow)
    Definition: lpi_clp.cpp:992
    SCIP_RETCODE SCIPlpiGetCols(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *lb, SCIP_Real *ub, int *nnonz, int *beg, int *ind, SCIP_Real *val)
    Definition: lpi_clp.cpp:1486
    SCIP_RETCODE SCIPlpiGetBInvCol(SCIP_LPI *lpi, int c, SCIP_Real *coef, int *inds, int *ninds)
    Definition: lpi_clp.cpp:3304
    SCIP_RETCODE SCIPlpiGetColNames(SCIP_LPI *lpi, int firstcol, int lastcol, char **colnames, char *namestorage, int namestoragesize, int *storageleft)
    Definition: lpi_clp.cpp:1615
    SCIP_RETCODE SCIPlpiGetBInvARow(SCIP_LPI *lpi, int r, const SCIP_Real *binvrow, SCIP_Real *coef, int *inds, int *ninds)
    Definition: lpi_clp.cpp:3342
    SCIP_RETCODE SCIPlpiGetRows(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhs, SCIP_Real *rhs, int *nnonz, int *beg, int *ind, SCIP_Real *val)
    Definition: lpi_clp.cpp:1552
    SCIP_Bool SCIPlpiWasSolved(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2414
    const char * SCIPlpiGetSolverDesc(void)
    Definition: lpi_clp.cpp:463
    SCIP_RETCODE SCIPlpiSolveBarrier(SCIP_LPI *lpi, SCIP_Bool crossover)
    Definition: lpi_clp.cpp:1985
    SCIP_Bool SCIPlpiIsOptimal(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2651
    SCIP_RETCODE SCIPlpiGetRowNames(SCIP_LPI *lpi, int firstrow, int lastrow, char **rownames, char *namestorage, int namestoragesize, int *storageleft)
    Definition: lpi_clp.cpp:1642
    SCIP_Bool SCIPlpiHasDualSolve(void)
    Definition: lpi_clp.cpp:502
    SCIP_RETCODE SCIPlpiEndStrongbranch(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2046
    SCIP_RETCODE SCIPlpiGetSides(SCIP_LPI *lpi, int firstrow, int lastrow, SCIP_Real *lhss, SCIP_Real *rhss)
    Definition: lpi_clp.cpp:1766
    SCIP_RETCODE SCIPlpiStrongbranchesInt(SCIP_LPI *lpi, int *cols, int ncols, SCIP_Real *psols, int itlim, SCIP_Real *down, SCIP_Real *up, SCIP_Bool *downvalid, SCIP_Bool *upvalid, int *iter)
    Definition: lpi_clp.cpp:2378
    SCIP_RETCODE SCIPlpiGetSol(SCIP_LPI *lpi, SCIP_Real *objval, SCIP_Real *primsol, SCIP_Real *dualsol, SCIP_Real *activity, SCIP_Real *redcost)
    Definition: lpi_clp.cpp:2816
    SCIP_Bool SCIPlpiHasDualRay(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2584
    SCIP_RETCODE SCIPlpiDelColset(SCIP_LPI *lpi, int *dstat)
    Definition: lpi_clp.cpp:874
    SCIP_RETCODE SCIPlpiGetObj(SCIP_LPI *lpi, int firstcol, int lastcol, SCIP_Real *vals)
    Definition: lpi_clp.cpp:1708
    SCIP_RETCODE SCIPlpiFreeState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
    Definition: lpi_clp.cpp:3531
    SCIP_Bool SCIPlpiIsPrimalInfeasible(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2530
    SCIP_RETCODE SCIPlpiSolveDual(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:1908
    SCIP_RETCODE SCIPlpiAddCols(SCIP_LPI *lpi, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **colnames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)
    Definition: lpi_clp.cpp:758
    SCIP_RETCODE SCIPlpiSolvePrimal(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:1833
    SCIP_RETCODE SCIPlpiLoadColLP(SCIP_LPI *lpi, SCIP_OBJSEN objsen, int ncols, const SCIP_Real *obj, const SCIP_Real *lb, const SCIP_Real *ub, char **colnames, int nrows, const SCIP_Real *lhs, const SCIP_Real *rhs, char **rownames, int nnonz, const int *beg, const int *ind, const SCIP_Real *val)
    Definition: lpi_clp.cpp:677
    SCIP_Bool SCIPlpiIsDualUnbounded(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2606
    SCIP_RETCODE SCIPlpiGetIterations(SCIP_LPI *lpi, int *iterations)
    Definition: lpi_clp.cpp:2949
    SCIP_RETCODE SCIPlpiGetBasisInd(SCIP_LPI *lpi, int *bind)
    Definition: lpi_clp.cpp:3217
    SCIP_RETCODE SCIPlpiCreate(SCIP_LPI **lpi, SCIP_MESSAGEHDLR *messagehdlr, const char *name, SCIP_OBJSEN objsen)
    Definition: lpi_clp.cpp:531
    void * SCIPlpiGetSolverPointer(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:471
    SCIP_RETCODE SCIPlpiChgObj(SCIP_LPI *lpi, int ncols, const int *ind, const SCIP_Real *obj)
    Definition: lpi_clp.cpp:1252
    SCIP_RETCODE SCIPlpiGetObjsen(SCIP_LPI *lpi, SCIP_OBJSEN *objsen)
    Definition: lpi_clp.cpp:1688
    SCIP_Bool SCIPlpiIsStable(SCIP_LPI *lpi)
    Definition: lpi_clp.cpp:2675
    SCIP_RETCODE SCIPlpiGetNCols(SCIP_LPI *lpi, int *ncols)
    Definition: lpi_clp.cpp:1447
    SCIP_RETCODE SCIPlpiInterrupt(SCIP_LPI *lpi, SCIP_Bool interrupt)
    Definition: lpi_clp.cpp:3923
    SCIP_RETCODE SCIPlpiDelCols(SCIP_LPI *lpi, int firstcol, int lastcol)
    Definition: lpi_clp.cpp:837
    SCIP_RETCODE SCIPlpiDelRowset(SCIP_LPI *lpi, int *dstat)
    Definition: lpi_clp.cpp:1030
    SCIP_RETCODE SCIPlpiScaleRow(SCIP_LPI *lpi, int row, SCIP_Real scaleval)
    Definition: lpi_clp.cpp:1279
    SCIP_RETCODE SCIPlpiGetNRows(SCIP_LPI *lpi, int *nrows)
    Definition: lpi_clp.cpp:1429
    SCIP_RETCODE SCIPlpiGetState(SCIP_LPI *lpi, BMS_BLKMEM *blkmem, SCIP_LPISTATE **lpistate)
    Definition: lpi_clp.cpp:3417
    SCIP_RETCODE SCIPlpiChgCoef(SCIP_LPI *lpi, int row, int col, SCIP_Real newval)
    Definition: lpi_clp.cpp:1209
    memory allocation routines
    struct BMS_BlkMem BMS_BLKMEM
    Definition: memory.h:437
    type definitions for specific LP solvers interface
    enum SCIP_LPParam SCIP_LPPARAM
    Definition: type_lpi.h:73
    enum SCIP_LPSolQuality SCIP_LPSOLQUALITY
    Definition: type_lpi.h:104
    enum SCIP_ObjSen SCIP_OBJSEN
    Definition: type_lpi.h:45
    type definitions for message output methods
    type definitions for return codes for SCIP methods
    enum SCIP_Retcode SCIP_RETCODE
    Definition: type_retcode.h:63