Scippy

SCIP

Solving Constraint Integer Programs

conflict_general.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 conflict_general.h
26 * @ingroup OTHER_CFILES
27 * @brief methods and datastructures for conflict analysis
28 * @author Tobias Achterberg
29 * @author Timo Berthold
30 * @author Stefan Heinz
31 * @author Marc Pfetsch
32 * @author Michael Winkler
33 * @author Jakob Witzig
34 *
35 * SCIP contains two kinds of conflict analysis:
36 * - In graph based conflict analysis, the graph consisting of derived
37 * is analysed. Code and documentation is available in conflict_graphanalysis.h
38 * - In dual proof analysis, an infeasible LP relaxation is analysed.
39 * Using the dual solution, a valid constraint is derived that is violated
40 * by all values in the domain. This constraint is added to the problem
41 * and can then be used for domain propagation.
42 * Code is available in conflict_dualproofanalysis.h
43 * This file contains the methods that are shared by both kinds of conflict analysis.
44 */
45
46/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
47
48#ifndef __SCIP_CONFLICT_GENERAL_H__
49#define __SCIP_CONFLICT_GENERAL_H__
50
51
53#include "scip/def.h"
54#include "scip/type_branch.h"
55#include "scip/type_conflict.h"
57#include "scip/type_event.h"
58#include "scip/type_cuts.h"
59#include "lpi/type_lpi.h"
60#include "scip/type_implics.h"
61#include "scip/type_lp.h"
62#include "scip/type_prob.h"
63#include "scip/type_reopt.h"
64#include "scip/type_retcode.h"
65#include "scip/type_set.h"
66#include "scip/type_stat.h"
67#include "scip/type_tree.h"
68#include "scip/type_var.h"
69
70#ifdef __cplusplus
71extern "C" {
72#endif
73
74/*
75 * Conflict Analysis
76 */
77
78/** creates conflict analysis data for propagation conflicts */
80 SCIP_CONFLICT** conflict, /**< pointer to conflict analysis data */
81 BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
82 SCIP_SET* set /**< global SCIP settings */
83 );
84
85/** frees conflict analysis data for propagation conflicts */
87 SCIP_CONFLICT** conflict, /**< pointer to conflict analysis data */
88 BMS_BLKMEM* blkmem /**< block memory of transformed problem */
89 );
90
91/** analyzes conflicting bound changes that were added with calls to SCIPconflictAddBound() and
92 * SCIPconflictAddRelaxedBound(), and on success, calls the conflict handlers to create a conflict constraint out of
93 * the resulting conflict set; updates statistics for propagation conflict analysis
94 */
96 SCIP_CONFLICT* conflict, /**< conflict analysis data */
97 BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
98 SCIP_SET* set, /**< global SCIP settings */
99 SCIP_STAT* stat, /**< problem statistics */
100 SCIP_PROB* prob, /**< problem data */
101 SCIP_TREE* tree, /**< branch and bound tree */
102 int validdepth, /**< minimal depth level at which the initial conflict set is valid */
103 SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
104 );
105
106/** adds the collected conflict constraints to the corresponding nodes; the best set->conf_maxconss conflict constraints
107 * are added to the node of their validdepth; additionally (if not yet added, and if repropagation is activated), the
108 * conflict constraint that triggers the earliest repropagation is added to the node of its validdepth
109 */
111 SCIP_CONFLICT* conflict, /**< conflict analysis data */
112 BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
113 SCIP_SET* set, /**< global SCIP settings */
114 SCIP_STAT* stat, /**< dynamic problem statistics */
115 SCIP_PROB* transprob, /**< transformed problem */
116 SCIP_PROB* origprob, /**< original problem */
117 SCIP_TREE* tree, /**< branch and bound tree */
118 SCIP_REOPT* reopt, /**< reoptimization data structure */
119 SCIP_LP* lp, /**< current LP data */
120 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
121 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
122 SCIP_CLIQUETABLE* cliquetable /**< clique table data structure */
123 );
124
125/** returns the current number of conflict sets in the conflict set storage */
127 SCIP_CONFLICT* conflict /**< conflict analysis data */
128 );
129
130/** returns the total number of conflict constraints that were added to the problem */
132 SCIP_CONFLICT* conflict /**< conflict analysis data */
133 );
134
135/** returns the total number of literals in conflict constraints that were added to the problem */
137 SCIP_CONFLICT* conflict /**< conflict analysis data */
138 );
139
140/** returns the total number of global bound changes applied by the conflict analysis */
142 SCIP_CONFLICT* conflict /**< conflict analysis data */
143 );
144
145/** returns the total number of conflict constraints that were added globally to the problem */
147 SCIP_CONFLICT* conflict /**< conflict analysis data */
148 );
149
150/** returns the total number of literals in conflict constraints that were added globally to the problem */
152 SCIP_CONFLICT* conflict /**< conflict analysis data */
153 );
154
155/** returns the total number of local bound changes applied by the conflict analysis */
157 SCIP_CONFLICT* conflict /**< conflict analysis data */
158 );
159
160/** returns the total number of conflict constraints that were added locally to the problem */
162 SCIP_CONFLICT* conflict /**< conflict analysis data */
163 );
164
165/** returns the total number of literals in conflict constraints that were added locally to the problem */
167 SCIP_CONFLICT* conflict /**< conflict analysis data */
168 );
169
170/** gets time in seconds used for preprocessing global conflict constraint before appliance */
172 SCIP_CONFLICT* conflict /**< conflict analysis data */
173 );
174
175/** gets time in seconds used for analyzing propagation conflicts */
177 SCIP_CONFLICT* conflict /**< conflict analysis data */
178 );
179
180/** gets number of calls to propagation conflict analysis */
182 SCIP_CONFLICT* conflict /**< conflict analysis data */
183 );
184
185/** gets number of calls to propagation conflict analysis that yield at least one conflict constraint */
187 SCIP_CONFLICT* conflict /**< conflict analysis data */
188 );
189
190/** gets number of conflict constraints detected in propagation conflict analysis */
192 SCIP_CONFLICT* conflict /**< conflict analysis data */
193 );
194
195/** gets total number of literals in conflict constraints created in propagation conflict analysis */
197 SCIP_CONFLICT* conflict /**< conflict analysis data */
198 );
199
200/** gets number of reconvergence constraints detected in propagation conflict analysis */
202 SCIP_CONFLICT* conflict /**< conflict analysis data */
203 );
204
205/** gets total number of literals in reconvergence constraints created in propagation conflict analysis */
207 SCIP_CONFLICT* conflict /**< conflict analysis data */
208 );
209
210/*
211 * Infeasible LP Conflict Analysis
212 */
213
214/** analyzes an infeasible or bound exceeding LP to find out the bound changes on variables that were responsible for the
215 * infeasibility or for exceeding the primal bound;
216 * on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating
217 * a conflict constraint out of the resulting conflict set;
218 * updates statistics for infeasible or bound exceeding LP conflict analysis
219 */
221 SCIP_CONFLICT* conflict, /**< conflict analysis data */
222 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
223 BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
224 SCIP_SET* set, /**< global SCIP settings */
225 SCIP_STAT* stat, /**< problem statistics */
226 SCIP_PROB* transprob, /**< transformed problem */
227 SCIP_PROB* origprob, /**< original problem */
228 SCIP_TREE* tree, /**< branch and bound tree */
229 SCIP_REOPT* reopt, /**< reoptimization data structure */
230 SCIP_LP* lp, /**< LP data */
231 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
232 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
233 SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
234 SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
235 );
236
237/** gets time in seconds used for analyzing infeasible LP conflicts */
239 SCIP_CONFLICT* conflict /**< conflict analysis data */
240 );
241
242/** gets number of calls to infeasible LP conflict analysis */
244 SCIP_CONFLICT* conflict /**< conflict analysis data */
245 );
246
247/** gets number of calls to infeasible LP conflict analysis that yield at least one conflict constraint */
249 SCIP_CONFLICT* conflict /**< conflict analysis data */
250 );
251
252/** gets number of conflict constraints detected in infeasible LP conflict analysis */
254 SCIP_CONFLICT* conflict /**< conflict analysis data */
255 );
256
257/** gets total number of literals in conflict constraints created in infeasible LP conflict analysis */
259 SCIP_CONFLICT* conflict /**< conflict analysis data */
260 );
261
262/** gets number of reconvergence constraints detected in infeasible LP conflict analysis */
264 SCIP_CONFLICT* conflict /**< conflict analysis data */
265 );
266
267/** gets total number of literals in reconvergence constraints created in infeasible LP conflict analysis */
269 SCIP_CONFLICT* conflict /**< conflict analysis data */
270 );
271
272/** gets number of LP iterations in infeasible LP conflict analysis */
274 SCIP_CONFLICT* conflict /**< conflict analysis data */
275 );
276
277/** gets time in seconds used for analyzing bound exceeding LP conflicts */
279 SCIP_CONFLICT* conflict /**< conflict analysis data */
280 );
281
282/** gets number of calls to bound exceeding LP conflict analysis */
284 SCIP_CONFLICT* conflict /**< conflict analysis data */
285 );
286
287/** gets number of calls to bound exceeding LP conflict analysis that yield at least one conflict constraint */
289 SCIP_CONFLICT* conflict /**< conflict analysis data */
290 );
291
292/** gets number of conflict constraints detected in bound exceeding LP conflict analysis */
294 SCIP_CONFLICT* conflict /**< conflict analysis data */
295 );
296
297/** gets total number of literals in conflict constraints created in bound exceeding LP conflict analysis */
299 SCIP_CONFLICT* conflict /**< conflict analysis data */
300 );
301
302/** gets number of reconvergence constraints detected in bound exceeding LP conflict analysis */
304 SCIP_CONFLICT* conflict /**< conflict analysis data */
305 );
306
307/** gets total number of literals in reconvergence constraints created in bound exceeding LP conflict analysis */
309 SCIP_CONFLICT* conflict /**< conflict analysis data */
310 );
311
312/** gets number of LP iterations in bound exceeding LP conflict analysis */
314 SCIP_CONFLICT* conflict /**< conflict analysis data */
315 );
316
317
318
319
320/*
321 * infeasible strong branching conflict analysis
322 */
323
324/** analyses infeasible strong branching sub problems for conflicts */
326 SCIP_CONFLICT* conflict, /**< conflict analysis data */
327 SCIP_CONFLICTSTORE* conflictstore, /**< conflict store */
328 BMS_BLKMEM* blkmem, /**< block memory buffers */
329 SCIP_SET* set, /**< global SCIP settings */
330 SCIP_STAT* stat, /**< dynamic problem statistics */
331 SCIP_PROB* transprob, /**< transformed problem */
332 SCIP_PROB* origprob, /**< original problem */
333 SCIP_TREE* tree, /**< branch and bound tree */
334 SCIP_REOPT* reopt, /**< reoptimization data structure */
335 SCIP_LP* lp, /**< LP data */
336 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
337 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
338 SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
339 SCIP_COL* col, /**< LP column with at least one infeasible strong branching subproblem */
340 SCIP_Bool* downconflict, /**< pointer to store whether a conflict constraint was created for an
341 * infeasible downwards branch, or NULL */
342 SCIP_Bool* upconflict /**< pointer to store whether a conflict constraint was created for an
343 * infeasible upwards branch, or NULL */
344 );
345
346/** gets time in seconds used for analyzing infeasible strong branching conflicts */
348 SCIP_CONFLICT* conflict /**< conflict analysis data */
349 );
350
351/** gets number of successful calls to dual proof analysis derived from infeasible LPs */
353 SCIP_CONFLICT* conflict /**< conflict analysis data */
354 );
355
356/** gets number of globally valid dual proof constraints derived from infeasible LPs */
358 SCIP_CONFLICT* conflict /**< conflict analysis data */
359 );
360
361/** gets number of locally valid dual proof constraints derived from infeasible LPs */
363 SCIP_CONFLICT* conflict /**< conflict analysis data */
364 );
365
366/** gets average length of dual proof constraints derived from infeasible LPs */
368 SCIP_CONFLICT* conflict /**< conflict analysis data */
369 );
370
371/** gets number of successfully analyzed dual proofs derived from bound exceeding LPs */
373 SCIP_CONFLICT* conflict /**< conflict analysis data */
374 );
375
376/** gets number of globally applied dual proofs derived from bound exceeding LPs */
378 SCIP_CONFLICT* conflict /**< conflict analysis data */
379 );
380
381/** gets number of locally applied dual proofs derived from bound exceeding LPs */
383 SCIP_CONFLICT* conflict /**< conflict analysis data */
384 );
385
386/** gets average length of dual proofs derived from bound exceeding LPs */
388 SCIP_CONFLICT* conflict /**< conflict analysis data */
389 );
390
391/** gets number of calls to infeasible strong branching conflict analysis */
393 SCIP_CONFLICT* conflict /**< conflict analysis data */
394 );
395
396/** gets number of calls to infeasible strong branching conflict analysis that yield at least one conflict constraint */
398 SCIP_CONFLICT* conflict /**< conflict analysis data */
399 );
400
401/** gets number of conflict constraints detected in infeasible strong branching conflict analysis */
403 SCIP_CONFLICT* conflict /**< conflict analysis data */
404 );
405
406/** gets total number of literals in conflict constraints created in infeasible strong branching conflict analysis */
408 SCIP_CONFLICT* conflict /**< conflict analysis data */
409 );
410
411/** gets number of reconvergence constraints detected in infeasible strong branching conflict analysis */
413 SCIP_CONFLICT* conflict /**< conflict analysis data */
414 );
415
416/** gets total number of literals in reconvergence constraints created in infeasible strong branching conflict analysis */
418 SCIP_CONFLICT* conflict /**< conflict analysis data */
419 );
420
421/** gets number of LP iterations in infeasible strong branching conflict analysis */
423 SCIP_CONFLICT* conflict /**< conflict analysis data */
424 );
425
426
427
428
429/*
430 * pseudo solution conflict analysis
431 */
432
433/** analyzes a pseudo solution with objective value exceeding the current cutoff to find out the bound changes on
434 * variables that were responsible for the objective value degradation;
435 * on success, calls standard conflict analysis with the responsible variables as starting conflict set, thus creating
436 * a conflict constraint out of the resulting conflict set;
437 * updates statistics for pseudo solution conflict analysis
438 */
440 SCIP_CONFLICT* conflict, /**< conflict analysis data */
441 BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
442 SCIP_SET* set, /**< global SCIP settings */
443 SCIP_STAT* stat, /**< problem statistics */
444 SCIP_PROB* transprob, /**< transformed problem */
445 SCIP_PROB* origprob, /**< original problem */
446 SCIP_TREE* tree, /**< branch and bound tree */
447 SCIP_REOPT* reopt, /**< reoptimization data structure */
448 SCIP_LP* lp, /**< LP data */
449 SCIP_BRANCHCAND* branchcand, /**< branching candidate storage */
450 SCIP_EVENTQUEUE* eventqueue, /**< event queue */
451 SCIP_CLIQUETABLE* cliquetable, /**< clique table data structure */
452 SCIP_Bool* success /**< pointer to store whether a conflict constraint was created, or NULL */
453 );
454
455/** gets time in seconds used for analyzing pseudo solution conflicts */
457 SCIP_CONFLICT* conflict /**< conflict analysis data */
458 );
459
460/** gets number of calls to pseudo solution conflict analysis */
462 SCIP_CONFLICT* conflict /**< conflict analysis data */
463 );
464
465/** gets number of calls to pseudo solution conflict analysis that yield at least one conflict constraint */
467 SCIP_CONFLICT* conflict /**< conflict analysis data */
468 );
469
470/** gets number of conflict constraints detected in pseudo solution conflict analysis */
472 SCIP_CONFLICT* conflict /**< conflict analysis data */
473 );
474
475/** gets total number of literals in conflict constraints created in pseudo solution conflict analysis */
477 SCIP_CONFLICT* conflict /**< conflict analysis data */
478 );
479
480/** gets number of reconvergence constraints detected in pseudo solution conflict analysis */
482 SCIP_CONFLICT* conflict /**< conflict analysis data */
483 );
484
485/** gets total number of literals in reconvergence constraints created in pseudo solution conflict analysis */
487 SCIP_CONFLICT* conflict /**< conflict analysis data */
488 );
489
490/** enables or disables all clocks of \p conflict, depending on the value of the flag */
492 SCIP_CONFLICT* conflict, /**< the conflict analysis data for which all clocks should be enabled or disabled */
493 SCIP_Bool enable /**< should the clocks of the conflict analysis data be enabled? */
494 );
495
496/** analyzes conflicting bound changes that were added with calls to SCIPconflictAddBound() and
497 * SCIPconflictAddRelaxedBound(), and on success, calls the conflict handlers to create a conflict constraint out of
498 * the resulting conflict set; afterwards the conflict queue and the conflict set is cleared
499 */
501 SCIP_CONFLICT* conflict, /**< conflict analysis data */
502 BMS_BLKMEM* blkmem, /**< block memory of transformed problem */
503 SCIP_SET* set, /**< global SCIP settings */
504 SCIP_STAT* stat, /**< problem statistics */
505 SCIP_PROB* prob, /**< problem data */
506 SCIP_TREE* tree, /**< branch and bound tree */
507 SCIP_Bool diving, /**< are we in strong branching or diving mode? */
508 int validdepth, /**< minimal depth level at which the initial conflict set is valid */
509 SCIP_Bool mustresolve, /**< should the conflict set only be used, if a resolution was applied? */
510 int* nconss, /**< pointer to store the number of generated conflict constraints */
511 int* nliterals, /**< pointer to store the number of literals in generated conflict constraints */
512 int* nreconvconss, /**< pointer to store the number of generated reconvergence constraints */
513 int* nreconvliterals /**< pointer to store the number of literals generated reconvergence constraints */
514 );
515
516/** calculates a Farkas proof from the current dual LP solution */
518 SCIP_SET* set, /**< global SCIP settings */
519 SCIP_PROB* prob, /**< transformed problem */
520 SCIP_LP* lp, /**< LP data */
521 SCIP_LPI* lpi, /**< LPI data */
522 SCIP_TREE* tree, /**< tree data */
523 SCIP_AGGRROW* farkasrow, /**< aggregated row representing the proof */
524 SCIP_Real* farkasact, /**< maximal activity of the proof constraint */
525 int* validdepth, /**< pointer to store the valid depth of the proof constraint */
526 SCIP_Real* curvarlbs, /**< current lower bounds of active problem variables */
527 SCIP_Real* curvarubs, /**< current upper bounds of active problem variables */
528 SCIP_Bool* valid /**< pointer store whether the proof constraint is valid */
529 );
530
531/** calculates a dual proof from the current dual LP solution */
533 SCIP_SET* set, /**< global SCIP settings */
534 SCIP_PROB* transprob, /**< transformed problem */
535 SCIP_LP* lp, /**< LP data */
536 SCIP_LPI* lpi, /**< LPI data */
537 SCIP_TREE* tree, /**< tree data */
538 SCIP_AGGRROW* farkasrow, /**< aggregated row representing the proof */
539 SCIP_Real* farkasact, /**< maximal activity of the proof constraint */
540 int* validdepth, /**< pointer to store the valid depth of the proof constraint */
541 SCIP_Real* curvarlbs, /**< current lower bounds of active problem variables */
542 SCIP_Real* curvarubs, /**< current upper bounds of active problem variables */
543 SCIP_Bool* valid /**< pointer store whether the proof constraint is valid */
544 );
545
546/** calculates the minimal activity of a given aggregation row */
548 SCIP_SET* set, /**< global SCIP settings */
549 SCIP_PROB* transprob, /**< transformed problem data */
550 SCIP_AGGRROW* aggrrow, /**< aggregation row */
551 SCIP_Real* curvarlbs, /**< current lower bounds of active problem variables (or NULL for global bounds) */
552 SCIP_Real* curvarubs, /**< current upper bounds of active problem variables (or NULL for global bounds) */
553 SCIP_Bool* infdelta /**< pointer to store whether at least one variable contributes with an infinite value */
554 );
555#ifdef __cplusplus
556}
557#endif
558
559#endif
int SCIPconflictGetNConflicts(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNAppliedGlobalConss(SCIP_CONFLICT *conflict)
SCIP_RETCODE SCIPconflictFlushConss(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable)
SCIP_Longint SCIPconflictGetNDualproofsInfLocal(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNAppliedLocalLiterals(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPropCalls(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNDualproofsInfNonzeros(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNStrongbranchIterations(SCIP_CONFLICT *conflict)
SCIP_Real SCIPconflictGetInfeasibleLPTime(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNInfeasibleLPCalls(SCIP_CONFLICT *conflict)
SCIP_RETCODE SCIPgetFarkasProof(SCIP_SET *set, SCIP_PROB *prob, SCIP_LP *lp, SCIP_LPI *lpi, SCIP_TREE *tree, SCIP_AGGRROW *farkasrow, SCIP_Real *farkasact, int *validdepth, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, SCIP_Bool *valid)
SCIP_RETCODE SCIPconflictCreate(SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem, SCIP_SET *set)
SCIP_Real SCIPconflictGetGlobalApplTime(SCIP_CONFLICT *conflict)
SCIP_RETCODE SCIPgetDualProof(SCIP_SET *set, SCIP_PROB *transprob, SCIP_LP *lp, SCIP_LPI *lpi, SCIP_TREE *tree, SCIP_AGGRROW *farkasrow, SCIP_Real *farkasact, int *validdepth, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, SCIP_Bool *valid)
SCIP_Longint SCIPconflictGetNInfeasibleLPSuccess(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNGlobalChgBds(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNAppliedLiterals(SCIP_CONFLICT *conflict)
SCIP_RETCODE SCIPconflictAnalyzeStrongbranch(SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_COL *col, SCIP_Bool *downconflict, SCIP_Bool *upconflict)
SCIP_Longint SCIPconflictGetNPropConflictLiterals(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNAppliedConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNBoundexceedingLPSuccess(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNStrongbranchCalls(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceLiterals(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPropReconvergenceConss(SCIP_CONFLICT *conflict)
SCIP_RETCODE SCIPconflictAnalyzePseudo(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *success)
SCIP_Real SCIPconflictGetBoundexceedingLPTime(SCIP_CONFLICT *conflict)
SCIP_RETCODE SCIPconflictAnalyze(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, int validdepth, SCIP_Bool *success)
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceLiterals(SCIP_CONFLICT *conflict)
SCIP_Real SCIPconflictGetPseudoTime(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPseudoReconvergenceLiterals(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPropReconvergenceLiterals(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNInfeasibleLPReconvergenceConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNAppliedLocalConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNStrongbranchReconvergenceConss(SCIP_CONFLICT *conflict)
SCIP_RETCODE SCIPconflictAnalyzeLP(SCIP_CONFLICT *conflict, SCIP_CONFLICTSTORE *conflictstore, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *transprob, SCIP_PROB *origprob, SCIP_TREE *tree, SCIP_REOPT *reopt, SCIP_LP *lp, SCIP_BRANCHCAND *branchcand, SCIP_EVENTQUEUE *eventqueue, SCIP_CLIQUETABLE *cliquetable, SCIP_Bool *success)
SCIP_Longint SCIPconflictGetNBoundexceedingLPConflictLiterals(SCIP_CONFLICT *conflict)
SCIP_Real SCIPconflictGetStrongbranchTime(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPseudoSuccess(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNInfeasibleLPConflictLiterals(SCIP_CONFLICT *conflict)
SCIP_Real SCIPaggrRowGetMinActivity(SCIP_SET *set, SCIP_PROB *transprob, SCIP_AGGRROW *aggrrow, SCIP_Real *curvarlbs, SCIP_Real *curvarubs, SCIP_Bool *infdelta)
SCIP_Longint SCIPconflictGetNPseudoConflictLiterals(SCIP_CONFLICT *conflict)
SCIP_RETCODE conflictAnalyze(SCIP_CONFLICT *conflict, BMS_BLKMEM *blkmem, SCIP_SET *set, SCIP_STAT *stat, SCIP_PROB *prob, SCIP_TREE *tree, SCIP_Bool diving, int validdepth, SCIP_Bool mustresolve, int *nconss, int *nliterals, int *nreconvconss, int *nreconvliterals)
SCIP_Longint SCIPconflictGetNLocalChgBds(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNDualproofsBndSuccess(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPropSuccess(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNDualproofsInfSuccess(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNBoundexceedingLPCalls(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPropConflictConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNStrongbranchSuccess(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNDualproofsBndGlobal(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPseudoReconvergenceConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNAppliedGlobalLiterals(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNDualproofsBndLocal(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPseudoCalls(SCIP_CONFLICT *conflict)
void SCIPconflictEnableOrDisableClocks(SCIP_CONFLICT *conflict, SCIP_Bool enable)
SCIP_Real SCIPconflictGetPropTime(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNBoundexceedingLPIterations(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNStrongbranchConflictLiterals(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNPseudoConflictConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNDualproofsBndNonzeros(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNDualproofsInfGlobal(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNBoundexceedingLPReconvergenceLiterals(SCIP_CONFLICT *conflict)
SCIP_RETCODE SCIPconflictFree(SCIP_CONFLICT **conflict, BMS_BLKMEM *blkmem)
SCIP_Longint SCIPconflictGetNStrongbranchConflictConss(SCIP_CONFLICT *conflict)
SCIP_Longint SCIPconflictGetNInfeasibleLPIterations(SCIP_CONFLICT *conflict)
common defines and data types used in all packages of SCIP
#define SCIP_Longint
Definition: def.h:158
#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 branching rules
type definitions for conflict analysis
type definitions for conflict store
type definitions for cuts
type definitions for managing events
type definitions for implications, variable bounds, and cliques
type definitions for LP management
type definitions for specific LP solvers interface
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
type definitions for problem variables