Scippy

SCIP

Solving Constraint Integer Programs

type_cutsel.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-2024 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_cutsel.h
26 * @ingroup TYPEDEFINITIONS
27 * @brief type definitions for cut selectors
28 * @author Felipe Serrano
29 * @author Mark Turner
30 */
31
32/** @defgroup DEFPLUGINS_CUTSEL Default cut selectors
33 * @ingroup DEFPLUGINS
34 * @brief implementation files (.c files) of the default cut selectors of SCIP
35 */
36
37/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
38
39#ifndef __SCIP_TYPE_CUTSEL_H__
40#define __SCIP_TYPE_CUTSEL_H__
41
42#include "scip/def.h"
43#include "scip/type_retcode.h"
44#include "scip/type_scip.h"
45#include "scip/type_lp.h"
46#include "scip/type_result.h"
47
48#ifdef __cplusplus
49extern "C" {
50#endif
51
52typedef struct SCIP_Cutsel SCIP_CUTSEL; /**< cut selector data structure */
53typedef struct SCIP_CutselData SCIP_CUTSELDATA; /**< cut selector specific data */
54
55
56/** copy method for cut selector plugins (called when SCIP copies plugins)
57 *
58 * input:
59 * - scip : SCIP main data structure
60 * - cutsel : the cut selector itself
61 */
62#define SCIP_DECL_CUTSELCOPY(x) SCIP_RETCODE x (SCIP* scip, SCIP_CUTSEL* cutsel)
63
64/** destructor of cut selector to free user data (called when SCIP is exiting)
65 *
66 * input:
67 * - scip : SCIP main data structure
68 * - cutsel : the cut selector itself
69 */
70#define SCIP_DECL_CUTSELFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_CUTSEL* cutsel)
71
72/** initialization method of cut selector (called after problem was transformed)
73 *
74 * input:
75 * - scip : SCIP main data structure
76 * - cutsel : the cut selector itself
77 */
78#define SCIP_DECL_CUTSELINIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_CUTSEL* cutsel)
79
80/** deinitialization method of cut selector (called before transformed problem is freed)
81 *
82 * input:
83 * - scip : SCIP main data structure
84 * - cutsel : the cut selector itself
85 */
86#define SCIP_DECL_CUTSELEXIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_CUTSEL* cutsel)
87
88/** solving process initialization method of cut selector (called when branch and bound process is about to begin)
89 *
90 * This method is called when the presolving was finished and the branch and bound process is about to begin.
91 * The cut selector may use this call to initialize its branch and bound specific data.
92 *
93 * input:
94 * - scip : SCIP main data structure
95 * - cutsel : the cut selector itself
96 */
97#define SCIP_DECL_CUTSELINITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_CUTSEL* cutsel)
98
99/** solving process deinitialization method of cut selector (called before branch and bound process data is freed)
100 *
101 * This method is called before the branch and bound process is freed.
102 * The cut selector should use this call to clean up its branch and bound data.
103 *
104 * input:
105 * - scip : SCIP main data structure
106 * - cutsel : the cut selector itself
107 */
108#define SCIP_DECL_CUTSELEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_CUTSEL* cutsel)
109
110/** cut selection method of cut selector
111 *
112 * This method is called to select the cuts to be added to the LP.
113 * Forcedcuts must not be changed, and cuts should only be resorted, with the first nselectedcuts of cuts being chosen.
114 * These nselectededcuts are used in addition to the forcedcuts (do not delete nor modify elements, simply resort).
115 *
116 * input:
117 * - scip : SCIP main data structure
118 * - cutsel : the cut selector itself
119 * - cuts : cutting planes to select from
120 * - ncuts : number of cutting planes to select from (length of cuts)
121 * - forcedcuts : list of cuts that are forced to be applied (i.e they are going to be selected no matter what)
122 * - nforcedcuts : number of forced cuts
123 * - root : are we at the root node?
124 * - maxselectedcuts : maximum number of cuts that can be selected (upper bound for nselectedcuts)
125 * - nselectedcuts : the first nselectedcuts from cuts are selected in addition to the nforcedcuts forced cuts
126 * - result : pointer to store the result of the cut selection call
127 *
128 * possible return values for *result (if more than one applies, the first in the list should be used):
129 * - SCIP_SUCCESS : the cut selection succeeded
130 * - SCIP_DIDNOTFIND : the cut selection did not find good enough cuts to select
131 */
132#define SCIP_DECL_CUTSELSELECT(x) SCIP_RETCODE x (SCIP* scip, SCIP_CUTSEL* cutsel, SCIP_ROW** cuts, int ncuts, \
133 SCIP_ROW** forcedcuts, int nforcedcuts, SCIP_Bool root, int maxnselectedcuts, int* nselectedcuts, SCIP_RESULT* result)
134
135#ifdef __cplusplus
136}
137#endif
138
139#endif
common defines and data types used in all packages of SCIP
struct SCIP_CutselData SCIP_CUTSELDATA
Definition: type_cutsel.h:53
type definitions for LP management
result codes for SCIP callback methods
type definitions for return codes for SCIP methods
type definitions for SCIP's main datastructure