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-2023 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
36 extern "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 };
45 typedef enum SCIP_ObjSen SCIP_OBJSEN;
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) */
103 };
105 
106 typedef struct SCIP_LPi SCIP_LPI; /**< solver dependent LP interface */
107 typedef struct SCIP_LPiState SCIP_LPISTATE; /**< complete LP state (i.e. basis information) */
108 typedef struct SCIP_LPiNorms SCIP_LPINORMS; /**< LP pricing norms information */
109 
110 #ifdef __cplusplus
111 }
112 #endif
113 
114 #endif
enum SCIP_LPSolQuality SCIP_LPSOLQUALITY
Definition: type_lpi.h:104
enum SCIP_BaseStat SCIP_BASESTAT
Definition: type_lpi.h:96
enum SCIP_ObjSen SCIP_OBJSEN
Definition: type_lpi.h:45
SCIP_ObjSen
Definition: type_lpi.h:40
enum SCIP_LPParam SCIP_LPPARAM
Definition: type_lpi.h:73
enum SCIP_Pricing SCIP_PRICING
Definition: type_lpi.h:86
SCIP_LPSolQuality
Definition: type_lpi.h:99
SCIP_BaseStat
Definition: type_lpi.h:89
SCIP_Pricing
Definition: type_lpi.h:76
SCIP_LPParam
Definition: type_lpi.h:48