Scippy

SCIP

Solving Constraint Integer Programs

conflictstore.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 conflictstore.h
26 * @ingroup INTERNALAPI
27 * @brief internal methods for storing conflicts
28 * @author Jakob Witzig
29 */
30
31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
32
33#ifndef __SCIP_CONFLICTSTORE_H__
34#define __SCIP_CONFLICTSTORE_H__
35
36
37#include "scip/def.h"
40#include "scip/type_retcode.h"
41#include "scip/type_cons.h"
42#include "scip/type_event.h"
43#include "scip/type_conflict.h"
44#include "scip/type_prob.h"
45#include "scip/type_reopt.h"
46#include "scip/type_set.h"
47#include "scip/type_stat.h"
48#include "scip/type_tree.h"
49
50#ifdef __cplusplus
51extern "C" {
52#endif
53
54/** creates separation storage */
56 SCIP_CONFLICTSTORE** conflictstore, /**< pointer to store conflict store */
57 SCIP_SET* set /**< global SCIP settings */
58 );
59
60/** frees separation storage */
62 SCIP_CONFLICTSTORE** conflictstore, /**< pointer to store conflict store */
63 BMS_BLKMEM* blkmem, /**< block memory */
64 SCIP_SET* set, /**< global SCIP settings */
65 SCIP_STAT* stat, /**< dynamic SCIP statistics */
66 SCIP_REOPT* reopt /**< reoptimization data */
67 );
68
69/** clears conflict store */
71 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
72 BMS_BLKMEM* blkmem, /**< block memory */
73 SCIP_SET* set, /**< global SCIP settings */
74 SCIP_STAT* stat, /**< dynamic SCIP statistics */
75 SCIP_REOPT* reopt /**< reoptimization data */
76 );
77
78/** cleans up conflict store */
80 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
81 BMS_BLKMEM* blkmem, /**< block memory */
82 SCIP_SET* set, /**< global SCIP settings */
83 SCIP_STAT* stat, /**< dynamic SCIP statistics */
84 SCIP_PROB* transprob, /**< transformed problem */
85 SCIP_REOPT* reopt /**< reoptimization data */
86 );
87
88/** adds a constraint to the pool of proof constraints based on dual rays
89 *
90 * @note this methods captures the constraint
91 */
93 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
94 SCIP_CONS* dualproof, /**< constraint based on a dual ray */
95 BMS_BLKMEM* blkmem, /**< block memory */
96 SCIP_SET* set, /**< global SCIP settings */
97 SCIP_STAT* stat, /**< dynamic SCIP statistics */
98 SCIP_PROB* transprob, /**< transformed problem */
99 SCIP_REOPT* reopt, /**< reoptimization data */
100 SCIP_Bool hasrelaxvar /**< does the dual proof contain at least one variable that exists in
101 * the current relaxation only? */
102 );
103
104/** adds a constraint to the pool of proof constraints based on dual solutions
105 *
106 * @note this methods captures the constraint
107 */
109 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
110 SCIP_CONS* dualproof, /**< constraint based on a dual solution */
111 BMS_BLKMEM* blkmem, /**< block memory */
112 SCIP_SET* set, /**< global SCIP settings */
113 SCIP_STAT* stat, /**< dynamic SCIP statistics */
114 SCIP_PROB* transprob, /**< transformed problem */
115 SCIP_REOPT* reopt, /**< reoptimization data */
116 SCIP_Real scale, /**< scaling factor that needs to be considered when updating the side */
117 SCIP_Bool updateside, /**< should the side be updated if a new incumbent is found */
118 SCIP_Bool hasrelaxvar /**< does the dual proof contain at least one variable that exists in
119 * the current relaxation only? */
120 );
121
122/** adds a conflict to the conflict store
123 *
124 * @note this method captures the constraint
125 */
127 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
128 BMS_BLKMEM* blkmem, /**< block memory */
129 SCIP_SET* set, /**< global SCIP settings */
130 SCIP_STAT* stat, /**< dynamic SCIP statistics */
131 SCIP_TREE* tree, /**< branch and bound tree (or NULL for an original constraint) */
132 SCIP_PROB* transprob, /**< transformed problem (or NULL for an original constraint) */
133 SCIP_REOPT* reopt, /**< reoptimization data */
134 SCIP_CONS* cons, /**< constraint representing the conflict */
135 SCIP_CONFTYPE conftype, /**< type of the conflict */
136 SCIP_Bool cutoffinvolved, /**< is a cutoff bound involved in this conflict */
137 SCIP_Real primalbound /**< primal bound the conflict depend on (or -SCIPinfinity) */
138 );
139
140/** deletes all conflicts depending on a cutoff bound larger than the given bound */
142 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
143 SCIP_SET* set, /**< global SCIP settings */
144 SCIP_STAT* stat, /**< dynamic SCIP statistics */
145 BMS_BLKMEM* blkmem, /**< block memory */
146 SCIP_PROB* transprob, /**< transformed problem*/
147 SCIP_REOPT* reopt, /**< reoptimization data */
148 SCIP_Real cutoffbound /**< current cutoff bound */
149 );
150
151/** returns the maximal size of the conflict pool */
153 SCIP_CONFLICTSTORE* conflictstore /**< conflict store */
154 );
155
156/** returns the initial size of the conflict pool */
158 SCIP_CONFLICTSTORE* conflictstore /**< conflict store */
159 );
160
161/** returns the number of stored conflicts on the conflict pool
162 *
163 * @note the number of active conflicts can be less
164 */
166 SCIP_CONFLICTSTORE* conflictstore /**< conflict store */
167 );
168
169/** returns all active conflicts stored in the conflict store */
171 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
172 SCIP_CONS** conflicts, /**< array to store conflicts */
173 int conflictsize, /**< size of the conflict array */
174 int* nconflicts /**< pointer to store the number of conflicts */
175 );
176
177/** transforms all original conflicts into transformed conflicts */
179 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
180 BMS_BLKMEM* blkmem, /**< block memory */
181 SCIP_SET* set, /**< global SCIP settings */
182 SCIP_STAT* stat, /**< dynamic SCIP statistics */
183 SCIP_TREE* tree, /**< branch and bound tree */
184 SCIP_PROB* transprob, /**< transformed problem */
185 SCIP_REOPT* reopt /**< reoptimization data */
186 );
187
188/** returns the average number of non-zeros over all stored dual ray constraints */
190 SCIP_CONFLICTSTORE* conflictstore /**< conflict store */
191 );
192
193/** return the number of stored dualray constraints */
195 SCIP_CONFLICTSTORE* conflictstore /**< conflict store */
196 );
197
198/** returns the average number of non-zeros over all stored boundexceeding proofs */
200 SCIP_CONFLICTSTORE* conflictstore /**< conflict store */
201 );
202
203/** returns the number of all stored boundexceeding proofs */
205 SCIP_CONFLICTSTORE* conflictstore /**< conflict store */
206 );
207
208#ifdef __cplusplus
209}
210#endif
211
212#endif
SCIP_RETCODE SCIPconflictstoreTransform(SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_REOPT *reopt)
SCIP_RETCODE SCIPconflictstoreAddDualraycons(SCIP_CONFLICTSTORE *conflictstore, SCIP_CONS *dualproof, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_REOPT *reopt, SCIP_Bool hasrelaxvar)
int SCIPconflictstoreGetNDualInfProofs(SCIP_CONFLICTSTORE *conflictstore)
SCIP_Real SCIPconflictstoreGetAvgNnzDualInfProofs(SCIP_CONFLICTSTORE *conflictstore)
SCIP_RETCODE SCIPconflictstoreCleanNewIncumbent(SCIP_CONFLICTSTORE *conflictstore, SCIP_SET *set, SCIP_STAT *stat, BMS_BLKMEM *blkmem, SCIP_PROB *transprob, SCIP_REOPT *reopt, SCIP_Real cutoffbound)
SCIP_RETCODE SCIPconflictstoreClear(SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_REOPT *reopt)
int SCIPconflictstoreGetMaxPoolSize(SCIP_CONFLICTSTORE *conflictstore)
int SCIPconflictstoreGetNDualBndProofs(SCIP_CONFLICTSTORE *conflictstore)
SCIP_RETCODE SCIPconflictstoreFree(SCIP_CONFLICTSTORE **conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_REOPT *reopt)
SCIP_RETCODE SCIPconflictstoreGetConflicts(SCIP_CONFLICTSTORE *conflictstore, SCIP_CONS **conflicts, int conflictsize, int *nconflicts)
int SCIPconflictstoreGetNConflictsInStore(SCIP_CONFLICTSTORE *conflictstore)
SCIP_RETCODE SCIPconflictstoreClean(SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_REOPT *reopt)
SCIP_Real SCIPconflictstoreGetAvgNnzDualBndProofs(SCIP_CONFLICTSTORE *conflictstore)
SCIP_RETCODE SCIPconflictstoreAddDualsolcons(SCIP_CONFLICTSTORE *conflictstore, SCIP_CONS *dualproof, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_REOPT *reopt, SCIP_Real scale, SCIP_Bool updateside, SCIP_Bool hasrelaxvar)
SCIP_RETCODE SCIPconflictstoreCreate(SCIP_CONFLICTSTORE **conflictstore, SCIP_SET *set)
SCIP_RETCODE SCIPconflictstoreAddConflict(SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_TREE *tree, SCIP_PROB *transprob, SCIP_REOPT *reopt, SCIP_CONS *cons, SCIP_CONFTYPE conftype, SCIP_Bool cutoffinvolved, SCIP_Real primalbound)
int SCIPconflictstoreGetInitPoolSize(SCIP_CONFLICTSTORE *conflictstore)
common defines and data types used in all packages of SCIP
#define SCIP_Bool
Definition: def.h:91
#define SCIP_Real
Definition: def.h:173
memory allocation routines
struct BMS_BlkMem BMS_BLKMEM
Definition: memory.h:437
Definition: heur_padm.c:135
type definitions for conflict analysis
enum SCIP_ConflictType SCIP_CONFTYPE
Definition: type_conflict.h:66
type definitions for conflict store
type definitions for constraints and constraint handlers
type definitions for managing events
type definitions for storing and manipulating the main problem
type definitions for collecting reoptimization information
type definitions for return codes for SCIP methods
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:63
type definitions for global SCIP settings
type definitions for problem statistics
type definitions for branch and bound tree