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   pub_cutsel.h
26   	 * @ingroup PUBLICCOREAPI
27   	 * @brief  public methods for cut selectors
28   	 * @author Mark Turner
29   	 * @author Felipe Serrano
30   	 */
31   	
32   	/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
33   	
34   	#ifndef __SCIP_PUB_CUTSEL_H__
35   	#define __SCIP_PUB_CUTSEL_H__
36   	
37   	
38   	#include "scip/def.h"
39   	#include "scip/type_misc.h"
40   	#include "scip/type_cutsel.h"
41   	
42   	#ifdef __cplusplus
43   	extern "C" {
44   	#endif
45   	
46   	/**@addtogroup PublicCutSelectorMethods
47   	 *
48   	 * @{
49   	 */
50   	
51   	/** gets name of cut selector */
52   	SCIP_EXPORT
53   	const char* SCIPcutselGetName(
54   	   SCIP_CUTSEL*          cutsel              /**< cut selector */
55   	   );
56   	
57   	/** gets user data of cut selector */
58   	SCIP_EXPORT
59   	SCIP_CUTSELDATA* SCIPcutselGetData(
60   	   SCIP_CUTSEL*          cutsel              /**< cut selector */
61   	   );
62   	
63   	/** gets description of cut selector */
64   	SCIP_EXPORT
65   	const char* SCIPcutselGetDesc(
66   	   SCIP_CUTSEL*          cutsel              /**< cut selector */
67   	   );
68   	
69   	/** gets priority of cut selector */
70   	SCIP_EXPORT
71   	int SCIPcutselGetPriority(
72   	   SCIP_CUTSEL*          cutsel              /**< cut selector */
73   	   );
74   	
75   	/** sets user data of cut selector; user has to free old data in advance! */
76   	SCIP_EXPORT
77   	void SCIPcutselSetData(
78   	   SCIP_CUTSEL*          cutsel,             /**< cut selector */
79   	   SCIP_CUTSELDATA*      cutseldata          /**< new cut selector user data */
80   	   );
81   	
82   	/** is cut selector initialized? */
83   	SCIP_EXPORT
84   	SCIP_Bool SCIPcutselIsInitialized(
85   	   SCIP_CUTSEL*          cutsel              /**< cut selector */
86   	   );
87   	
88   	/** gets time in seconds used in this cut selector for setting up for next stages */
89   	SCIP_EXPORT
90   	SCIP_Real SCIPcutselGetSetupTime(
91   	   SCIP_CUTSEL*          cutsel              /**< cut selector */
92   	   );
93   	
94   	/** gets time in seconds used in this cut selector */
95   	SCIP_EXPORT
96   	SCIP_Real SCIPcutselGetTime(
97   	   SCIP_CUTSEL*          cutsel              /**< cut selector */
98   	   );
99   	
100  	/** get number of times the cutselector was called */
101  	SCIP_Longint SCIPcutselGetNCalls(
102  	   SCIP_CUTSEL*          cutsel              /**< cut selector */
103  	   );
104  	
105  	/** get number of times the cutselector was called at the root */
106  	SCIP_Longint SCIPcutselGetNRootCalls(
107  	   SCIP_CUTSEL*          cutsel              /**< cut selector */
108  	   );
109  	
110  	/** get total number of cuts that were selected at the root */
111  	SCIP_Longint SCIPcutselGetNRootCuts(
112  	   SCIP_CUTSEL*          cutsel              /**< cut selector */
113  	   );
114  	
115  	/** get total number of forced cuts that were selected at the root */
116  	SCIP_Longint SCIPcutselGetNRootForcedCuts(
117  	   SCIP_CUTSEL*          cutsel              /**< cut selector */
118  	   );
119  	
120  	/** get total number of root cuts that were filtered */
121  	SCIP_Longint SCIPcutselGetNRootCutsFiltered(
122  	   SCIP_CUTSEL*          cutsel              /**< cut selector */
123  	   );
124  	
125  	/** get total number of local cuts that were selected */
126  	SCIP_Longint SCIPcutselGetNLocalCuts(
127  	   SCIP_CUTSEL*          cutsel              /**< cut selector */
128  	   );
129  	
130  	/** get total number of forced local cuts that were selected */
131  	SCIP_Longint SCIPcutselGetNLocalForcedCuts(
132  	   SCIP_CUTSEL*          cutsel              /**< cut selector */
133  	   );
134  	
135  	/** get total number of local cuts that were filtered */
136  	SCIP_Longint SCIPcutselGetNLocalCutsFiltered(
137  	   SCIP_CUTSEL*          cutsel              /**< cut selector */
138  	   );
139  	
140  	/** compares two cut selectors w. r. to their priority */
141  	SCIP_EXPORT
142  	SCIP_DECL_SORTPTRCOMP(SCIPcutselComp);
143  	
144  	/** @} */
145  	
146  	#ifdef __cplusplus
147  	}
148  	#endif
149  	
150  	#endif
151