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 */
40   	enum SCIP_ObjSen
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 */
48   	enum SCIP_LPParam
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   	};
73   	typedef enum SCIP_LPParam SCIP_LPPARAM;
74   	
75   	/** LP pricing strategy */
76   	enum SCIP_Pricing
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   	};
86   	typedef enum SCIP_Pricing SCIP_PRICING;
87   	
88   	/** basis status for columns and rows */
89   	enum SCIP_BaseStat
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   	};
96   	typedef enum SCIP_BaseStat SCIP_BASESTAT;
97   	
98   	/** LP solution quality quantities */
99   	enum SCIP_LPSolQuality
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  	};
104  	typedef enum SCIP_LPSolQuality SCIP_LPSOLQUALITY;
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
115