Scippy

SCIP

Solving Constraint Integer Programs

type_benderscut.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_benderscut.h
26 * @ingroup TYPEDEFINITIONS
27 * @brief type definitions for Benders' decomposition cut
28 * @author Stephen J. Maher
29 *
30 * This file defines the interface for Benders' decomposition cut implemented in C.
31 *
32 */
33
34/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
35
36#ifndef __SCIP_TYPE_BENDERSCUT_H__
37#define __SCIP_TYPE_BENDERSCUT_H__
38
39#include "scip/def.h"
40#include "scip/type_scip.h"
41#include "scip/type_result.h"
42#include "scip/type_timing.h"
43
44#ifdef __cplusplus
45extern "C" {
46#endif
47
48typedef struct SCIP_Benderscut SCIP_BENDERSCUT; /**< Benders' decomposition cut */
49typedef struct SCIP_BenderscutData SCIP_BENDERSCUTDATA; /**< locally defined Benders' decomposition cut data */
50
51
52/** copy method for the Benders' decomposition cut plugins (called when SCIP copies plugins)
53 *
54 * input:
55 * - scip : SCIP main data structure
56 * - benders : the Benders' decomposition structure
57 * - benderscut : the Benders' decomposition cut structure
58 */
59#define SCIP_DECL_BENDERSCUTCOPY(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut)
60
61/** destructor of the Benders' decomposition cut to free user data (called when SCIP is exiting)
62 *
63 * input:
64 * - scip : SCIP main data structure
65 * - benderscut : the Benders' decomposition cut structure
66 */
67#define SCIP_DECL_BENDERSCUTFREE(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
68
69/** initialization method of the Benders' decomposition cut (called after problem was transformed)
70 *
71 * input:
72 * - scip : SCIP main data structure
73 * - benderscut : the Benders' decomposition cut structure
74 */
75#define SCIP_DECL_BENDERSCUTINIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
76
77/** deinitialization method of the Benders' decomposition cut (called before transformed problem is freed)
78 *
79 * input:
80 * - scip : SCIP main data structure
81 * - benderscut : the Benders' decomposition cut structure
82 */
83#define SCIP_DECL_BENDERSCUTEXIT(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
84
85/** solving process initialization method of the Benders' decomposition cut (called when branch and bound process is about to begin)
86 *
87 * This method is called when the presolving was finished and the branch and bound process is about to begin.
88 *
89 * input:
90 * - scip : SCIP main data structure
91 * - benderscut : the Benders' decomposition cut structure
92 */
93#define SCIP_DECL_BENDERSCUTINITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
94
95/** solving process deinitialization method of the Benders' decomposition cut (called before branch and bound process data is freed)
96 *
97 * This method is called before the branch and bound process is freed.
98 * The Benders' decomposition cut should use this call to clean up its branch and bound data.
99 *
100 * input:
101 * - scip : SCIP main data structure
102 * - benderscut : the Benders' decomposition cut structure
103 */
104#define SCIP_DECL_BENDERSCUTEXITSOL(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERSCUT* benderscut)
105
106/** execution method of the Benders' decomposition cut technique
107 *
108 * input:
109 * - scip : SCIP main data structure
110 * - benders : the Benders' decomposition structure
111 * - benderscut : the Benders' cut structure
112 * - sol : the solution that was used for setting up the subproblems
113 * - probnumber : the number of the subproblem from which the cut is generated
114 * - type : the enforcement type that called the subproblem solve
115 * - result : pointer to store the result of the cut algorithm
116 *
117 * possible return values for *result (if more than one applies, the first in the list should be used):
118 * - SCIP_DIDNOTRUN : if the Benders' cut was not run.
119 * - SCIP_DIDNOTFIND : if the Benders' cut was run, but there was an error in generating the cut.
120 * - SCIP_FEASIBLE : if the Benders' decomposition cut algorithm has not generated a constraint or cut.
121 * - SCIP_CONSADDED : an additional constraint for the Benders' decomposition cut was generated
122 * - SCIP_SEPARATED : a cutting plane representing the Benders' decomposition cut was generated
123 */
124#define SCIP_DECL_BENDERSCUTEXEC(x) SCIP_RETCODE x (SCIP* scip, SCIP_BENDERS* benders, SCIP_BENDERSCUT* benderscut,\
125 SCIP_SOL* sol, int probnumber, SCIP_BENDERSENFOTYPE type, SCIP_RESULT* result)
126
127#ifdef __cplusplus
128}
129#endif
130
131#endif
common defines and data types used in all packages of SCIP
struct SCIP_BenderscutData SCIP_BENDERSCUTDATA
result codes for SCIP callback methods
type definitions for SCIP's main datastructure
timing definitions for SCIP