Scippy

    SCIP

    Solving Constraint Integer Programs

    type_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 type_lpi.h
    26 * @brief type definitions for specific LP solvers interface
    27 * @author Tobias Achterberg
    28 */
    29
    30/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
    31
    32#ifndef __SCIP_TYPE_LPI_H__
    33#define __SCIP_TYPE_LPI_H__
    34
    35#ifdef __cplusplus
    36extern "C" {
    37#endif
    38
    39/** objective sense */
    41{
    42 SCIP_OBJSEN_MAXIMIZE = -1, /**< maximize objective function */
    43 SCIP_OBJSEN_MINIMIZE = +1 /**< minimize objective function */
    44};
    46
    47/** LP solver parameters */
    49{
    50 SCIP_LPPAR_FROMSCRATCH = 0, /**< solver should start from scratch at next call? */
    51 SCIP_LPPAR_FASTMIP = 1, /**< fast mip setting of LP solver */
    52 SCIP_LPPAR_SCALING = 2, /**< should LP solver use scaling? */
    53 SCIP_LPPAR_PRESOLVING = 3, /**< should LP solver use presolving? */
    54 SCIP_LPPAR_PRICING = 4, /**< pricing strategy */
    55 SCIP_LPPAR_LPINFO = 5, /**< should LP solver output information to the screen? */
    56 SCIP_LPPAR_FEASTOL = 6, /**< feasibility tolerance for primal variables and slacks, strictly positive */
    57 SCIP_LPPAR_DUALFEASTOL = 7, /**< feasibility tolerance for dual variables and reduced costs, strictly positive */
    58 SCIP_LPPAR_BARRIERCONVTOL = 8, /**< convergence tolerance used in barrier algorithm */
    59 SCIP_LPPAR_OBJLIM = 9, /**< objective limit (stop if objective is known be larger/smaller than limit for min/max-imization) */
    60 SCIP_LPPAR_LPITLIM = 10, /**< LP iteration limit, greater than or equal 0 */
    61 SCIP_LPPAR_LPTILIM = 11, /**< LP time limit, positive */
    62 SCIP_LPPAR_MARKOWITZ = 12, /**< Markowitz tolerance */
    63 SCIP_LPPAR_ROWREPSWITCH = 13, /**< simplex algorithm shall use row representation of the basis
    64 * if number of rows divided by number of columns exceeds this value
    65 * (0 <= value or -1 = valu ; if negative, this change never occurs) */
    66 SCIP_LPPAR_THREADS = 14, /**< number of threads used to solve the LP */
    67 SCIP_LPPAR_CONDITIONLIMIT = 15, /**< maximum condition number of LP basis counted as stable */
    68 SCIP_LPPAR_TIMING = 16, /**< type of timer (1 - cpu, 2 - wallclock, 0 - off) */
    69 SCIP_LPPAR_RANDOMSEED = 17, /**< inital random seed, e.g. for perturbations in the simplex (0: LP default) */
    70 SCIP_LPPAR_POLISHING = 18, /**< set solution polishing (0 - disable, 1 - enable) */
    71 SCIP_LPPAR_REFACTOR = 19 /**< set refactorization interval (0 - automatic) */
    72};
    74
    75/** LP pricing strategy */
    77{
    78 SCIP_PRICING_LPIDEFAULT = 0, /**< the SCIP/LP interface should use its preferred strategy */
    79 SCIP_PRICING_AUTO = 1, /**< the LP solver should use its preferred strategy */
    80 SCIP_PRICING_FULL = 2, /**< full pricing */
    81 SCIP_PRICING_PARTIAL = 3, /**< partial pricing */
    82 SCIP_PRICING_STEEP = 4, /**< steepest edge pricing */
    83 SCIP_PRICING_STEEPQSTART = 5, /**< steepest edge pricing without initial dual norms */
    84 SCIP_PRICING_DEVEX = 6 /**< devex pricing */
    85};
    87
    88/** basis status for columns and rows */
    90{
    91 SCIP_BASESTAT_LOWER = 0, /**< (slack) variable is at its lower bound */
    92 SCIP_BASESTAT_BASIC = 1, /**< (slack) variable is basic */
    93 SCIP_BASESTAT_UPPER = 2, /**< (slack) variable is at its upper bound */
    94 SCIP_BASESTAT_ZERO = 3 /**< free variable is non-basic and set to zero */
    95};
    97
    98/** LP solution quality quantities */
    100{
    101 SCIP_LPSOLQUALITY_ESTIMCONDITION = 0, /**< estimated condition number of (scaled) basis matrix (SCIP_Real) */
    102 SCIP_LPSOLQUALITY_EXACTCONDITION = 1 /**< exact condition number of (scaled) basis matrix (SCIP_Real) */
    105
    106typedef struct SCIP_LPi SCIP_LPI; /**< solver dependent LP interface */
    107typedef struct SCIP_LPiState SCIP_LPISTATE; /**< complete LP state (i.e. basis information) */
    108typedef struct SCIP_LPiNorms SCIP_LPINORMS; /**< LP pricing norms information */
    109
    110#ifdef __cplusplus
    111}
    112#endif
    113
    114#endif
    SCIP_Pricing
    Definition: type_lpi.h:77
    @ SCIP_PRICING_STEEPQSTART
    Definition: type_lpi.h:83
    @ SCIP_PRICING_AUTO
    Definition: type_lpi.h:79
    @ SCIP_PRICING_DEVEX
    Definition: type_lpi.h:84
    @ SCIP_PRICING_STEEP
    Definition: type_lpi.h:82
    @ SCIP_PRICING_FULL
    Definition: type_lpi.h:80
    @ SCIP_PRICING_LPIDEFAULT
    Definition: type_lpi.h:78
    @ SCIP_PRICING_PARTIAL
    Definition: type_lpi.h:81
    enum SCIP_Pricing SCIP_PRICING
    Definition: type_lpi.h:86
    enum SCIP_LPParam SCIP_LPPARAM
    Definition: type_lpi.h:73
    SCIP_LPSolQuality
    Definition: type_lpi.h:100
    @ SCIP_LPSOLQUALITY_EXACTCONDITION
    Definition: type_lpi.h:102
    @ SCIP_LPSOLQUALITY_ESTIMCONDITION
    Definition: type_lpi.h:101
    SCIP_LPParam
    Definition: type_lpi.h:49
    @ SCIP_LPPAR_PRICING
    Definition: type_lpi.h:54
    @ SCIP_LPPAR_REFACTOR
    Definition: type_lpi.h:71
    @ SCIP_LPPAR_THREADS
    Definition: type_lpi.h:66
    @ SCIP_LPPAR_LPINFO
    Definition: type_lpi.h:55
    @ SCIP_LPPAR_POLISHING
    Definition: type_lpi.h:70
    @ SCIP_LPPAR_SCALING
    Definition: type_lpi.h:52
    @ SCIP_LPPAR_TIMING
    Definition: type_lpi.h:68
    @ SCIP_LPPAR_LPTILIM
    Definition: type_lpi.h:61
    @ SCIP_LPPAR_BARRIERCONVTOL
    Definition: type_lpi.h:58
    @ SCIP_LPPAR_PRESOLVING
    Definition: type_lpi.h:53
    @ SCIP_LPPAR_CONDITIONLIMIT
    Definition: type_lpi.h:67
    @ SCIP_LPPAR_RANDOMSEED
    Definition: type_lpi.h:69
    @ SCIP_LPPAR_FASTMIP
    Definition: type_lpi.h:51
    @ SCIP_LPPAR_DUALFEASTOL
    Definition: type_lpi.h:57
    @ SCIP_LPPAR_FROMSCRATCH
    Definition: type_lpi.h:50
    @ SCIP_LPPAR_MARKOWITZ
    Definition: type_lpi.h:62
    @ SCIP_LPPAR_FEASTOL
    Definition: type_lpi.h:56
    @ SCIP_LPPAR_LPITLIM
    Definition: type_lpi.h:60
    @ SCIP_LPPAR_ROWREPSWITCH
    Definition: type_lpi.h:63
    @ SCIP_LPPAR_OBJLIM
    Definition: type_lpi.h:59
    SCIP_BaseStat
    Definition: type_lpi.h:90
    @ SCIP_BASESTAT_BASIC
    Definition: type_lpi.h:92
    @ SCIP_BASESTAT_UPPER
    Definition: type_lpi.h:93
    @ SCIP_BASESTAT_LOWER
    Definition: type_lpi.h:91
    @ SCIP_BASESTAT_ZERO
    Definition: type_lpi.h:94
    enum SCIP_LPSolQuality SCIP_LPSOLQUALITY
    Definition: type_lpi.h:104
    SCIP_ObjSen
    Definition: type_lpi.h:41
    @ SCIP_OBJSEN_MAXIMIZE
    Definition: type_lpi.h:42
    @ SCIP_OBJSEN_MINIMIZE
    Definition: type_lpi.h:43
    enum SCIP_ObjSen SCIP_OBJSEN
    Definition: type_lpi.h:45
    enum SCIP_BaseStat SCIP_BASESTAT
    Definition: type_lpi.h:96