Scippy

SCIP

Solving Constraint Integer Programs

scip_cut.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-2025 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 scip_cut.h
26 * @ingroup PUBLICCOREAPI
27 * @brief public methods for cuts and aggregation rows
28 * @author Tobias Achterberg
29 * @author Timo Berthold
30 * @author Thorsten Koch
31 * @author Alexander Martin
32 * @author Marc Pfetsch
33 * @author Kati Wolter
34 * @author Gregor Hendel
35 * @author Leona Gottwald
36 */
37
38/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
39
40#ifndef __SCIP_SCIP_CUT_H__
41#define __SCIP_SCIP_CUT_H__
42
43
44#include "scip/def.h"
45#include "scip/type_cutpool.h"
46#include "scip/type_lp.h"
47#include "scip/type_result.h"
48#include "scip/type_retcode.h"
49#include "scip/type_scip.h"
50#include "scip/type_sol.h"
51
52#ifdef __cplusplus
53extern "C" {
54#endif
55
56/**@addtogroup PublicCutMethods
57 *
58 * @{
59 */
60
61/** returns row's cutoff distance in the direction of the given primal solution
62 *
63 * @return the cutoff distance of the cut with respect to the LP solution in the direction of the given primal solution
64 *
65 * @pre This method can be called if @p scip is in one of the following stages:
66 * - \ref SCIP_STAGE_SOLVING
67 */
68SCIP_EXPORT
70 SCIP* scip, /**< SCIP data structure */
71 SCIP_SOL* sol, /**< solution to compute direction for cutoff distance; must not be NULL */
72 SCIP_ROW* cut /**< separated cut */
73 );
74
75/** returns efficacy of the cut with respect to the given primal solution or the current LP solution:
76 * e = -feasibility/norm
77 *
78 * @return the efficacy of the cut with respect to the given primal solution or the current LP solution:
79 * e = -feasibility/norm
80 *
81 * @pre This method can be called if @p scip is in one of the following stages:
82 * - \ref SCIP_STAGE_SOLVING
83 */
84SCIP_EXPORT
86 SCIP* scip, /**< SCIP data structure */
87 SCIP_SOL* sol, /**< primal CIP solution, or NULL for current LP solution */
88 SCIP_ROW* cut /**< separated cut */
89 );
90
91/** returns whether the cut's efficacy with respect to the given primal solution or the current LP solution is greater
92 * than the minimal cut efficacy
93 *
94 * @return TRUE if the cut's efficacy with respect to the given primal solution or the current LP solution is greater
95 * than the minimal cut efficacy, otherwise FALSE
96 *
97 * @pre This method can be called if @p scip is in one of the following stages:
98 * - \ref SCIP_STAGE_SOLVING
99 */
100SCIP_EXPORT
102 SCIP* scip, /**< SCIP data structure */
103 SCIP_SOL* sol, /**< primal CIP solution, or NULL for current LP solution */
104 SCIP_ROW* cut /**< separated cut */
105 );
106
107/** checks if the given cut's efficacy is larger than the minimal cut efficacy
108 *
109 * @return TRUE if the given cut's efficacy is larger than the minimal cut efficacy, otherwise FALSE
110 */
111SCIP_EXPORT
113 SCIP* scip, /**< SCIP data structure */
114 SCIP_Real efficacy /**< efficacy of the cut */
115 );
116
117/** calculates the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
118 *
119 * @return the efficacy norm of the given vector, which depends on the "separating/efficacynorm" parameter
120 */
121SCIP_EXPORT
123 SCIP* scip, /**< SCIP data structure */
124 SCIP_Real* vals, /**< array of values */
125 int nvals /**< number of values */
126 );
127
128/** indicates whether a cut is applicable
129 *
130 * If the cut has only one variable and this method returns FALSE, it may
131 * still be possible that the cut can be added to the LP (as a row instead
132 * of a boundchange), but it will be a very weak cut. The user is asked
133 * to avoid such cuts.
134 *
135 * @pre This method can be called if @p scip is in one of the following stages:
136 * - \ref SCIP_STAGE_SOLVING
137 *
138 * @return whether the cut is modifiable, not a bound change, or a bound change that changes bounds by at least epsilon
139 */
140SCIP_EXPORT
142 SCIP* scip, /**< SCIP data structure */
143 SCIP_ROW* cut /**< separated cut */
144 );
145
146/** adds row to separation storage
147 *
148 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
149 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
150 *
151 * @pre This method can be called if @p scip is in one of the following stages:
152 * - \ref SCIP_STAGE_SOLVING
153 */
154SCIP_EXPORT
156 SCIP* scip, /**< SCIP data structure */
157 SCIP_ROW* row, /**< row */
158 SCIP_Bool forcecut, /**< should the row be forced to enter the LP? */
159 SCIP_Bool* infeasible /**< pointer to store whether row has been detected to be infeasible for local bounds */
160 );
161
162/** checks if cut is already existing in global cutpool
163 *
164 * @return TRUE is returned if the cut is not already existing in the global cutpool, FALSE otherwise
165 *
166 * @pre This method can be called if @p scip is in one of the following stages:
167 * - \ref SCIP_STAGE_SOLVING
168 */
169SCIP_EXPORT
171 SCIP* scip, /**< SCIP data structure */
172 SCIP_ROW* row /**< cutting plane to add */
173 );
174
175/** if not already existing, adds row to global cut pool
176 *
177 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
178 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
179 *
180 * @pre This method can be called if @p scip is in one of the following stages:
181 * - \ref SCIP_STAGE_SOLVING
182 */
183SCIP_EXPORT
185 SCIP* scip, /**< SCIP data structure */
186 SCIP_ROW* row /**< cutting plane to add */
187 );
188
189/** removes the row from the global cut pool
190 *
191 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
192 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
193 *
194 * @pre This method can be called if @p scip is in one of the following stages:
195 * - \ref SCIP_STAGE_SOLVING
196 */
197SCIP_EXPORT
199 SCIP* scip, /**< SCIP data structure */
200 SCIP_ROW* row /**< row to remove */
201 );
202
203/** gets current cuts in the global cut pool
204 *
205 * @return the current cuts in the global cut pool
206 *
207 * @pre This method can be called if @p scip is in one of the following stages:
208 * - \ref SCIP_STAGE_SOLVING
209 * - \ref SCIP_STAGE_SOLVED
210 * - \ref SCIP_STAGE_EXITSOLVE
211 */
212SCIP_EXPORT
214 SCIP* scip /**< SCIP data structure */
215 );
216
217/** gets current number of rows in the global cut pool
218 *
219 * @return the current number of rows in the global cut pool
220 *
221 * @pre This method can be called if @p scip is in one of the following stages:
222 * - \ref SCIP_STAGE_SOLVING
223 * - \ref SCIP_STAGE_SOLVED
224 * - \ref SCIP_STAGE_EXITSOLVE
225 */
226SCIP_EXPORT
228 SCIP* scip /**< SCIP data structure */
229 );
230
231/** gets the global cut pool used by SCIP
232 *
233 * @return the global cut pool used by SCIP
234 *
235 * @pre This method can be called if @p scip is in one of the following stages:
236 * - \ref SCIP_STAGE_SOLVING
237 * - \ref SCIP_STAGE_SOLVED
238 * - \ref SCIP_STAGE_EXITSOLVE
239 */
240SCIP_EXPORT
242 SCIP* scip /**< SCIP data structure */
243 );
244
245/** creates a cut pool
246 *
247 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
248 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
249 *
250 * @pre This method can be called if @p scip is in one of the following stages:
251 * - \ref SCIP_STAGE_TRANSFORMING
252 * - \ref SCIP_STAGE_TRANSFORMED
253 * - \ref SCIP_STAGE_INITPRESOLVE
254 * - \ref SCIP_STAGE_PRESOLVING
255 * - \ref SCIP_STAGE_EXITPRESOLVE
256 * - \ref SCIP_STAGE_PRESOLVED
257 * - \ref SCIP_STAGE_INITSOLVE
258 * - \ref SCIP_STAGE_SOLVING
259 */
260SCIP_EXPORT
262 SCIP* scip, /**< SCIP data structure */
263 SCIP_CUTPOOL** cutpool, /**< pointer to store cut pool */
264 int agelimit /**< maximum age a cut can reach before it is deleted from the pool */
265 );
266
267/** frees a cut pool
268 *
269 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
270 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
271 *
272 * @pre This method can be called if @p scip is in one of the following stages:
273 * - \ref SCIP_STAGE_TRANSFORMING
274 * - \ref SCIP_STAGE_TRANSFORMED
275 * - \ref SCIP_STAGE_INITPRESOLVE
276 * - \ref SCIP_STAGE_PRESOLVING
277 * - \ref SCIP_STAGE_EXITPRESOLVE
278 * - \ref SCIP_STAGE_PRESOLVED
279 * - \ref SCIP_STAGE_INITSOLVE
280 * - \ref SCIP_STAGE_SOLVING
281 * - \ref SCIP_STAGE_SOLVED
282 * - \ref SCIP_STAGE_EXITSOLVE
283 * - \ref SCIP_STAGE_FREETRANS
284 */
285SCIP_EXPORT
287 SCIP* scip, /**< SCIP data structure */
288 SCIP_CUTPOOL** cutpool /**< pointer to store cut pool */
289 );
290
291/** if not already existing, adds row to a cut pool and captures it
292 *
293 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
294 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
295 *
296 * @pre This method can be called if @p scip is in one of the following stages:
297 * - \ref SCIP_STAGE_INITSOLVE
298 * - \ref SCIP_STAGE_SOLVING
299 */
300SCIP_EXPORT
302 SCIP* scip, /**< SCIP data structure */
303 SCIP_CUTPOOL* cutpool, /**< cut pool */
304 SCIP_ROW* row /**< cutting plane to add */
305 );
306
307/** adds row to a cut pool and captures it; doesn't check for multiple cuts
308 *
309 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
310 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
311 *
312 * @pre This method can be called if @p scip is in one of the following stages:
313 * - \ref SCIP_STAGE_INITSOLVE
314 * - \ref SCIP_STAGE_SOLVING
315 */
316SCIP_EXPORT
318 SCIP* scip, /**< SCIP data structure */
319 SCIP_CUTPOOL* cutpool, /**< cut pool */
320 SCIP_ROW* row /**< cutting plane to add */
321 );
322
323/** removes the LP row from a cut pool
324 *
325 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
326 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
327 *
328 * @pre This method can be called if @p scip is in one of the following stages:
329 * - \ref SCIP_STAGE_INITSOLVE
330 * - \ref SCIP_STAGE_SOLVING
331 * - \ref SCIP_STAGE_SOLVED
332 */
333SCIP_EXPORT
335 SCIP* scip, /**< SCIP data structure */
336 SCIP_CUTPOOL* cutpool, /**< cut pool */
337 SCIP_ROW* row /**< row to remove */
338 );
339
340/** separates cuts from a cut pool
341 *
342 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
343 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
344 *
345 * @pre This method can be called if @p scip is in one of the following stages:
346 * - \ref SCIP_STAGE_SOLVING
347 */
348SCIP_EXPORT
350 SCIP* scip, /**< SCIP data structure */
351 SCIP_CUTPOOL* cutpool, /**< cut pool */
352 SCIP_RESULT* result /**< pointer to store the result of the separation call */
353 );
354
355/** separates cuts w.r.t. given solution from a cut pool
356 *
357 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
358 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
359 *
360 * @pre This method can be called if @p scip is in one of the following stages:
361 * - \ref SCIP_STAGE_SOLVING
362 */
363SCIP_EXPORT
365 SCIP* scip, /**< SCIP data structure */
366 SCIP_CUTPOOL* cutpool, /**< cut pool */
367 SCIP_SOL* sol, /**< solution to be separated */
368 SCIP_Bool pretendroot, /**< should the cut separators be called as if we are at the root node? */
369 SCIP_RESULT* result /**< pointer to store the result of the separation call */
370 );
371
372/** if not already existing, adds row to the delayed global cut pool
373 *
374 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
375 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
376 *
377 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
378 */
379SCIP_EXPORT
381 SCIP* scip, /**< SCIP data structure */
382 SCIP_ROW* row /**< cutting plane to add */
383 );
384
385/** removes the row from the delayed global cut pool
386 *
387 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
388 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
389 *
390 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
391 */
392SCIP_EXPORT
394 SCIP* scip, /**< SCIP data structure */
395 SCIP_ROW* row /**< cutting plane to add */
396 );
397
398/** gets current cuts in the delayed global cut pool
399 *
400 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
401 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
402 *
403 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
404 */
405SCIP_EXPORT
407 SCIP* scip /**< SCIP data structure */
408 );
409
410/** gets current number of rows in the delayed global cut pool
411 *
412 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
413 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
414 *
415 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
416 */
417SCIP_EXPORT
419 SCIP* scip /**< SCIP data structure */
420 );
421
422/** gets the delayed global cut pool used by SCIP
423 *
424 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
425 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
426 *
427 * @pre This method can be called if @p scip is the stages \ref SCIP_STAGE_SOLVING
428 */
429SCIP_EXPORT
431 SCIP* scip /**< SCIP data structure */
432 );
433
434/** separates the given primal solution or the current LP solution by calling the separators and constraint handlers'
435 * separation methods;
436 * the generated cuts are stored in the separation storage and can be accessed with the methods SCIPgetCuts() and
437 * SCIPgetNCuts();
438 * after evaluating the cuts, you have to call SCIPclearCuts() in order to remove the cuts from the
439 * separation storage;
440 * it is possible to call SCIPseparateSol() multiple times with different solutions and evaluate the found cuts
441 * afterwards
442 *
443 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
444 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
445 *
446 * @pre This method can be called if @p scip is in one of the following stages:
447 * - \ref SCIP_STAGE_SOLVING
448 */
449SCIP_EXPORT
451 SCIP* scip, /**< SCIP data structure */
452 SCIP_SOL* sol, /**< primal solution that should be separated, or NULL for LP solution */
453 SCIP_Bool pretendroot, /**< should the cut separators be called as if we are at the root node? */
454 SCIP_Bool allowlocal, /**< should the separator be asked to separate local cuts */
455 SCIP_Bool onlydelayed, /**< should only separators be called that were delayed in the previous round? */
456 SCIP_Bool* delayed, /**< pointer to store whether a separator was delayed */
457 SCIP_Bool* cutoff /**< pointer to store whether the node can be cut off */
458 );
459
460/** gets the array of cuts currently stored in the separation storage
461 *
462 * @return the array of cuts currently stored in the separation storage
463 *
464 * @pre This method can be called if @p scip is in one of the following stages:
465 * - \ref SCIP_STAGE_PRESOLVED
466 * - \ref SCIP_STAGE_SOLVING
467 * - \ref SCIP_STAGE_SOLVED
468 */
469SCIP_EXPORT
471 SCIP* scip /**< SCIP data structure */
472 );
473
474/** get current number of cuts in the separation storage
475 *
476 * @return the current number of cuts in the separation storage
477 *
478 * @pre This method can be called if @p scip is in one of the following stages:
479 * - \ref SCIP_STAGE_PRESOLVED
480 * - \ref SCIP_STAGE_SOLVING
481 * - \ref SCIP_STAGE_SOLVED
482 */
483SCIP_EXPORT
484int SCIPgetNCuts(
485 SCIP* scip /**< SCIP data structure */
486 );
487
488/** clears the separation storage
489 *
490 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
491 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
492 *
493 * @pre This method can be called if @p scip is in one of the following stages:
494 * - \ref SCIP_STAGE_SOLVING
495 */
496SCIP_EXPORT
498 SCIP* scip /**< SCIP data structure */
499 );
500
501/** removes cuts that are inefficacious w.r.t. the current LP solution from separation storage without adding the cuts to the LP
502 *
503 * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
504 * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
505 *
506 * @pre This method can be called if @p scip is in one of the following stages:
507 * - \ref SCIP_STAGE_SOLVING
508 */
509SCIP_EXPORT
511 SCIP* scip /**< SCIP data structure */
512 );
513
514/**@} */
515
516#ifdef __cplusplus
517}
518#endif
519
520#endif
common defines and data types used in all packages of SCIP
#define SCIP_Bool
Definition: def.h:91
#define SCIP_Real
Definition: def.h:156
SCIP_RETCODE SCIPseparateSol(SCIP *scip, SCIP_SOL *sol, SCIP_Bool pretendroot, SCIP_Bool allowlocal, SCIP_Bool onlydelayed, SCIP_Bool *delayed, SCIP_Bool *cutoff)
Definition: scip_cut.c:710
SCIP_RETCODE SCIPaddPoolCut(SCIP *scip, SCIP_ROW *row)
Definition: scip_cut.c:336
SCIP_Real SCIPgetCutEfficacy(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
Definition: scip_cut.c:94
SCIP_RETCODE SCIPdelDelayedPoolCut(SCIP *scip, SCIP_ROW *row)
Definition: scip_cut.c:635
SCIP_Real SCIPgetCutLPSolCutoffDistance(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
Definition: scip_cut.c:72
SCIP_RETCODE SCIPdelRowCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
Definition: scip_cut.c:534
SCIP_RETCODE SCIPremoveInefficaciousCuts(SCIP *scip)
Definition: scip_cut.c:798
SCIP_RETCODE SCIPseparateCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_RESULT *result)
Definition: scip_cut.c:555
SCIP_CUT ** SCIPgetDelayedPoolCuts(SCIP *scip)
Definition: scip_cut.c:654
SCIP_RETCODE SCIPaddRowCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
Definition: scip_cut.c:489
SCIP_Bool SCIPisCutNew(SCIP *scip, SCIP_ROW *row)
Definition: scip_cut.c:318
SCIP_Bool SCIPisCutEfficacious(SCIP *scip, SCIP_SOL *sol, SCIP_ROW *cut)
Definition: scip_cut.c:117
SCIP_CUTPOOL * SCIPgetGlobalCutpool(SCIP *scip)
Definition: scip_cut.c:413
SCIP_RETCODE SCIPseparateSolCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_SOL *sol, SCIP_Bool pretendroot, SCIP_RESULT *result)
Definition: scip_cut.c:585
SCIP_Bool SCIPisEfficacious(SCIP *scip, SCIP_Real efficacy)
Definition: scip_cut.c:135
SCIP_Bool SCIPisCutApplicable(SCIP *scip, SCIP_ROW *cut)
Definition: scip_cut.c:207
SCIP_CUTPOOL * SCIPgetDelayedGlobalCutpool(SCIP *scip)
Definition: scip_cut.c:686
SCIP_RETCODE SCIPaddRow(SCIP *scip, SCIP_ROW *row, SCIP_Bool forcecut, SCIP_Bool *infeasible)
Definition: scip_cut.c:225
int SCIPgetNPoolCuts(SCIP *scip)
Definition: scip_cut.c:395
SCIP_ROW ** SCIPgetCuts(SCIP *scip)
Definition: scip_cut.c:744
SCIP_CUT ** SCIPgetPoolCuts(SCIP *scip)
Definition: scip_cut.c:377
SCIP_RETCODE SCIPclearCuts(SCIP *scip)
Definition: scip_cut.c:779
SCIP_RETCODE SCIPcreateCutpool(SCIP *scip, SCIP_CUTPOOL **cutpool, int agelimit)
Definition: scip_cut.c:437
SCIP_Real SCIPgetVectorEfficacyNorm(SCIP *scip, SCIP_Real *vals, int nvals)
Definition: scip_cut.c:149
int SCIPgetNDelayedPoolCuts(SCIP *scip)
Definition: scip_cut.c:670
int SCIPgetNCuts(SCIP *scip)
Definition: scip_cut.c:762
SCIP_RETCODE SCIPdelPoolCut(SCIP *scip, SCIP_ROW *row)
Definition: scip_cut.c:356
SCIP_RETCODE SCIPfreeCutpool(SCIP *scip, SCIP_CUTPOOL **cutpool)
Definition: scip_cut.c:468
SCIP_RETCODE SCIPaddNewRowCutpool(SCIP *scip, SCIP_CUTPOOL *cutpool, SCIP_ROW *row)
Definition: scip_cut.c:511
SCIP_RETCODE SCIPaddDelayedPoolCut(SCIP *scip, SCIP_ROW *row)
Definition: scip_cut.c:616
type definitions for storing cuts in a cut pool
type definitions for LP management
result codes for SCIP callback methods
enum SCIP_Result SCIP_RESULT
Definition: type_result.h:61
type definitions for return codes for SCIP methods
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
type definitions for SCIP's main datastructure
type definitions for storing primal CIP solutions