Scippy

SCIP

Solving Constraint Integer Programs

presol_tworowbnd.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 presol_tworowbnd.h
26 * @ingroup DEFPLUGINS_PRESOL
27 * @brief do bound tightening by using two rows
28 * @author Dieter Weninger
29 * @author Patrick Gemander
30 *
31 * Perform bound tightening on two inequalities with some common variables.
32 * Two possible methods are being used.
33 *
34 * 1. LP-bound
35 * Let two constraints be given:
36 * \f{eqnarray*}{
37 * A_{iR} x_R + A_{iS} x_S \geq b_i\\
38 * A_{kR} x_R + A_{kT} x_T \geq b_k
39 * \f}
40 * with \f$N\f$ the set of variable indexes, \f$R \subseteq N\f$, \f$S \subseteq N\f$, \f$T \subseteq N\f$,
41 * \f$R \cap S = \emptyset\f$, \f$R \cap T = \emptyset\f$, \f$S \cap T = \emptyset\f$ and row indices \f$i \not= k\f$.
42 *
43 * Let \f$\ell\f$ and \f$u\f$ be bound vectors for x and solve the following two LPs
44 * \f{eqnarray*}{
45 * L = \min \{ A_{kR} x_R : A_{iR} x_R + A_{iS} x_S \geq b_i, \ell \leq x \leq u \}\\
46 * U = \max \{ A_{kR} x_R : A_{iR} x_R + A_{iS} x_S \geq b_i, \ell \leq x \leq u \}
47 * \f}
48 * and use \f$L\f$ and \f$U\f$ for getting bounds on \f$x_T\f$.
49 *
50 * If \f$L + \mbox{infimum}(A_{kT}x_T) \geq b_k\f$, then the second constraint above is redundant.
51 *
52 * 2. ConvComb with clique-extension
53 * Given two constraints
54 * \f{eqnarray*}{
55 * A_{i\cdot} x \geq b_i \\
56 * A_{k\cdot} x \geq b_k \\
57 * \ell \leq x \leq u \\
58 * \f}
59 * this method determines promising values for \f$\lambda \in (0,1)\f$ and
60 * applies feasibility-based bound tightening to the convex combinations
61 *
62 * \f$(\lambda A_{i\cdot} + (1 - \lambda) A_{k\cdot}) x \geq \lambda b_i + (1 - \lambda) b_k\f$.
63 *
64 * Additionally, cliques drawn from the SCIPcliqueTable are used
65 * to further strengthen the above bound tightening. Full details can be found in
66 * - Belotti P. "Bound reduction using pairs of linear inequalities"
67 * - Chen W. et. al "Two-row and two-column mixed-integer presolve using hashing-based pairing methods"
68 */
69
70/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
71
72#ifndef __SCIP_PRESOL_TWOROWBND_H__
73#define __SCIP_PRESOL_TWOROWBND_H__
74
75#include "scip/def.h"
76#include "scip/type_retcode.h"
77#include "scip/type_scip.h"
78
79#ifdef __cplusplus
80extern "C" {
81#endif
82
83/** creates the tworowbnd presolver and includes it in SCIP
84 *
85 * @ingroup PresolverIncludes
86 */
87SCIP_EXPORT
89 SCIP* scip /**< SCIP data structure */
90 );
91
92#ifdef __cplusplus
93}
94#endif
95
96#endif
common defines and data types used in all packages of SCIP
SCIP_RETCODE SCIPincludePresolTworowbnd(SCIP *scip)
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