SCIP Doxygen Documentation
Loading...
Searching...
No Matches
struct_cuts.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-2026 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 struct_cuts.h
26 * @ingroup PUBLICCOREAPI
27 * @brief struct definitions for cuts
28 * @author Leona Gottwald
29 *
30 */
31
32/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
33
34#ifndef __SCIP_STRUCT_CUTS_H__
35#define __SCIP_STRUCT_CUTS_H__
36
37#include "scip/def.h"
38#include "scip/dbldblarith.h"
39#include "scip/type_lp.h"
40#include "scip/type_cuts.h"
41
43{
44 SCIP_Real* vals; /**< non-zero coefficients of the cut row */
45 int* inds; /**< problem indices of variables with a non-zero coefficient in the cut row */
46 int* rowsinds; /**< lpposition of rows that have been added to the cutrow */
47 int* slacksign; /**< slacksign of rows that have been added to the cutrow */
48 SCIP_Real* rowweights; /**< weights of rows that have been added to the cutrow */
49 QUAD_MEMBER(SCIP_Real rhs); /**< right hand side of the cut row */
50 int nnz; /**< number of non-zeros in the cut row */
51 int nrows; /**< number of rows that have been added to the cutrow */
52 int rowssize; /**< size of the row and slacksign array */
53 int rank; /**< rank of the cut row */
54 SCIP_Bool local; /**< is the cut row only valid locally? */
55 SCIP_Longint certificateline; /**< proof index in certificate or SCIP_LONGINT_MAX */
56};
57
58/** parameters for cut generation methods */
60{
61 SCIP_Real boundswitch; /**< fraction of domain up to which lower bound is used in transformation */
62 SCIP_Real minfrac; /**< minimal fractionality of rhs to produce cut for */
63 SCIP_Real maxfrac; /**< maximal fractionality of rhs to produce cut for */
64 int vartypeusevbds; /**< variable types for which variable bound substitution is allowed */
65 int maxtestdelta; /**< maximum number of deltas to test (CMIR) */
66 int* boundsfortrans; /**< bounds that should be used for transformed variables (CMIR) */
67 SCIP_BOUNDTYPE* boundtypesfortrans; /**< type of bounds for transformed variables (CMIR) */
68 SCIP_Bool postprocess; /**< apply post-processing step? */
69 SCIP_Bool allowlocal; /**< should local information be allowed, resulting in a local cut? */
70};
71
72/** result of cut generation attempt */
74{
75 SCIP_Real* cutcoefs; /**< array of non-zero coefficients in the cut (pre-allocated) */
76 int* cutinds; /**< array of variable indices of non-zero coefficients (pre-allocated) */
77 SCIP_CUTGENMETHOD winningmethod; /**< cut generation method which produced the best cut */
78 SCIP_Real cutefficacy; /**< efficacy of the best cut */
79 SCIP_Real cutrhs; /**< right hand side of the best cut */
80 int cutnnz; /**< number of non-zeros in the best cut */
81 int cutrank; /**< rank of the best cut */
82 SCIP_Bool cutislocal; /**< is the best cut only valid locally? */
83 SCIP_Bool success; /**< is a valid cut found? */
84};
85
86#endif
defines macros for basic operations in double-double arithmetic giving roughly twice the precision of...
common defines and data types used in all packages of SCIP
#define SCIP_Longint
Definition def.h:150
#define SCIP_Bool
Definition def.h:100
#define SCIP_Real
Definition def.h:165
SCIP_Longint certificateline
Definition struct_cuts.h:55
SCIP_Real * vals
Definition struct_cuts.h:44
SCIP_Real * rowweights
Definition struct_cuts.h:48
QUAD_MEMBER(SCIP_Real rhs)
SCIP_Bool local
Definition struct_cuts.h:54
int * slacksign
Definition struct_cuts.h:47
SCIP_Real boundswitch
Definition struct_cuts.h:61
SCIP_Bool postprocess
Definition struct_cuts.h:68
SCIP_Real minfrac
Definition struct_cuts.h:62
SCIP_BOUNDTYPE * boundtypesfortrans
Definition struct_cuts.h:67
SCIP_Real maxfrac
Definition struct_cuts.h:63
SCIP_Bool allowlocal
Definition struct_cuts.h:69
SCIP_Bool cutislocal
Definition struct_cuts.h:82
SCIP_Real cutefficacy
Definition struct_cuts.h:78
SCIP_CUTGENMETHOD winningmethod
Definition struct_cuts.h:77
SCIP_Bool success
Definition struct_cuts.h:83
SCIP_Real * cutcoefs
Definition struct_cuts.h:75
type definitions for cuts
uint32_t SCIP_CUTGENMETHOD
Definition type_cuts.h:39
type definitions for LP management
enum SCIP_BoundType SCIP_BOUNDTYPE
Definition type_lp.h:60