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