Scippy

SCIP

Solving Constraint Integer Programs

cons_indicator.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 cons_indicator.h
26 * @ingroup CONSHDLRS
27 * @brief constraint handler for indicator constraints
28 * @author Marc Pfetsch
29 *
30 */
31
32/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
33
34#ifndef __SCIP_CONS_INDICATOR_H__
35#define __SCIP_CONS_INDICATOR_H__
36
37
38#include "scip/def.h"
39#include "scip/type_cons.h"
40#include "scip/type_lp.h"
41#include "scip/type_retcode.h"
42#include "scip/type_scip.h"
43#include "scip/type_sol.h"
44#include "scip/type_var.h"
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/** creates the handler for indicator constraints and includes it in SCIP
51 *
52 * @ingroup ConshdlrIncludes
53 * */
54SCIP_EXPORT
56 SCIP* scip /**< SCIP data structure */
57 );
58
59/**@addtogroup CONSHDLRS
60 *
61 * @{
62 *
63 * @name Indicator Constraints
64 *
65 * @{
66 *
67 * An indicator constraint is given by a binary variable \f$z\f$ and an inequality \f$ax \leq
68 * b\f$. It states that if \f$z = 1\f$ then \f$ax \leq b\f$ holds.
69 *
70 * This constraint is handled by adding a slack variable \f$s:\; ax - s \leq b\f$ with \f$s \geq
71 * 0\f$. The constraint is enforced by fixing \f$s\f$ to 0 if \f$z = 1\f$.
72 *
73 * @note The constraint only implements an implication not an equivalence, i.e., it does not ensure
74 * that \f$z = 1\f$ if \f$ax \leq b\f$ or equivalently if \f$s = 0\f$ holds.
75 *
76 * This constraint is equivalent to a linear constraint \f$ax - s \leq b\f$ and an SOS1 constraint on
77 * \f$z\f$ and \f$s\f$ (at most one should be nonzero). In the indicator context we can, however,
78 * separate more inequalities.
79 */
80
81/** creates and captures an indicator constraint
82 *
83 * @note @a binvar is checked to be binary only later. This enables a change of the type in
84 * procedures reading an instance.
85 *
86 * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
87 */
88SCIP_EXPORT
90 SCIP* scip, /**< SCIP data structure */
91 SCIP_CONS** cons, /**< pointer to hold the created constraint (indicator or quadratic) */
92 const char* name, /**< name of constraint */
93 SCIP_VAR* binvar, /**< binary indicator variable (or NULL) */
94 int nvars, /**< number of variables in the inequality */
95 SCIP_VAR** vars, /**< array with variables of inequality (or NULL) */
96 SCIP_Real* vals, /**< values of variables in inequality (or NULL) */
97 SCIP_Real rhs, /**< rhs of the inequality */
98 SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. */
99 SCIP_Bool separate, /**< should the constraint be separated during LP processing?
100 * Usually set to TRUE. */
101 SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
102 * TRUE for model constraints, FALSE for additional, redundant constraints. */
103 SCIP_Bool check, /**< should the constraint be checked for feasibility?
104 * TRUE for model constraints, FALSE for additional, redundant constraints. */
105 SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
106 * Usually set to TRUE. */
107 SCIP_Bool local, /**< is constraint only valid locally?
108 * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
109 SCIP_Bool dynamic, /**< is constraint subject to aging?
110 * Usually set to FALSE. Set to TRUE for own cuts which
111 * are separated as constraints. */
112 SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
113 * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
114 SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even
115 * if it may be moved to a more global node?
116 * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
117 );
118
119/** creates and captures an indicator constraint in its most basic version, i. e., all constraint flags are set to their
120 * basic value as explained for the method SCIPcreateConsIndicator(); all flags can be set via
121 * SCIPsetConsFLAGNAME-methods in scip.h
122 *
123 * @see SCIPcreateConsIndicator() for information about the basic constraint flag configuration
124 *
125 * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
126 */
127SCIP_EXPORT
129 SCIP* scip, /**< SCIP data structure */
130 SCIP_CONS** cons, /**< pointer to hold the created constraint (indicator or quadratic) */
131 const char* name, /**< name of constraint */
132 SCIP_VAR* binvar, /**< binary indicator variable (or NULL) */
133 int nvars, /**< number of variables in the inequality */
134 SCIP_VAR** vars, /**< array with variables of inequality (or NULL) */
135 SCIP_Real* vals, /**< values of variables in inequality (or NULL) */
136 SCIP_Real rhs /**< rhs of the inequality */
137 );
138
139/** creates and captures a indicator constraint in a more generic version.
140 *
141 * The key difference from SCIPcreateConsIndicator() is the activeone and lessthanineq Booleans.
142 * If \f$z = o\f$, with \f$o\f$ the activeone flag, then:
143 * if lessthanineq then \f$a^T x \leq b\f$ holds, else the passed vectors are assumed to be of the form \f$a^T x \geq b\f$.
144 * The underlying linear constraint is always created as a less-than inequality.
145 */
146SCIP_EXPORT
148 SCIP* scip, /**< SCIP data structure */
149 SCIP_CONS** cons, /**< pointer to hold the created constraint (indicator or quadratic) */
150 const char* name, /**< name of constraint */
151 SCIP_VAR* binvar, /**< binary indicator variable (or NULL) */
152 int nvars, /**< number of variables in the inequality */
153 SCIP_VAR** vars, /**< array with variables of inequality (or NULL) */
154 SCIP_Real* vals, /**< values of variables in inequality (or NULL) */
155 SCIP_Real rhs, /**< rhs of the inequality */
156 SCIP_Bool activeone, /**< is the constraint active when the binary is 1? */
157 SCIP_Bool lessthanineq, /**< is the linear constraint a less than RHS (TRUE) or greater than RHS (FALSE)? */
158 SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. */
159 SCIP_Bool separate, /**< should the constraint be separated during LP processing?
160 * Usually set to TRUE. */
161 SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
162 * TRUE for model constraints, FALSE for additional, redundant constraints. */
163 SCIP_Bool check, /**< should the constraint be checked for feasibility?
164 * TRUE for model constraints, FALSE for additional, redundant constraints. */
165 SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
166 * Usually set to TRUE. */
167 SCIP_Bool local, /**< is constraint only valid locally?
168 * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
169 SCIP_Bool dynamic, /**< is constraint subject to aging?
170 * Usually set to FALSE. Set to TRUE for own cuts which
171 * are separated as constraints. */
172 SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
173 * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
174 SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even
175 * if it may be moved to a more global node?
176 * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
177 );
178
179/** creates and captures an indicator constraint with given linear constraint and slack variable
180 *
181 * @note @a binvar is checked to be binary only later. This enables a change of the type in
182 * procedures reading an instance.
183 *
184 * @note we assume that @a slackvar actually appears in @a lincons and we also assume that it takes
185 * the role of a slack variable!
186 *
187 * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
188 */
189SCIP_EXPORT
191 SCIP* scip, /**< SCIP data structure */
192 SCIP_CONS** cons, /**< pointer to hold the created constraint */
193 const char* name, /**< name of constraint */
194 SCIP_VAR* binvar, /**< binary indicator variable */
195 SCIP_CONS* lincons, /**< linear constraint */
196 SCIP_VAR* slackvar, /**< slack variable */
197 SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. */
198 SCIP_Bool separate, /**< should the constraint be separated during LP processing?
199 * Usually set to TRUE. */
200 SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
201 * TRUE for model constraints, FALSE for additional, redundant constraints. */
202 SCIP_Bool check, /**< should the constraint be checked for feasibility?
203 * TRUE for model constraints, FALSE for additional, redundant constraints. */
204 SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
205 * Usually set to TRUE. */
206 SCIP_Bool local, /**< is constraint only valid locally?
207 * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
208 SCIP_Bool dynamic, /**< is constraint subject to aging?
209 * Usually set to FALSE. Set to TRUE for own cuts which
210 * are separated as constraints. */
211 SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
212 * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
213 SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even
214 * if it may be moved to a more global node?
215 * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
216 );
217
218/** creates and captures an indicator constraint with given linear constraint and slack variable
219 * in a generic version, i. e., with a flag activeone indicating whether the constraint is active on
220 * value 1 or 0 of the binary variable.
221
222 * @note @a binvar is checked to be binary only later. This enables a change of the type in
223 * procedures reading an instance.
224 *
225 * @note we assume that @a slackvar actually appears in @a lincons and we also assume that it takes
226 * the role of a slack variable!
227 *
228 * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
229 *
230 * @see SCIPcreateConsIndicatorLinCons() for information about the basic constraint flag configuration
231 */
232SCIP_EXPORT
234 SCIP* scip, /**< SCIP data structure */
235 SCIP_CONS** cons, /**< pointer to hold the created constraint */
236 const char* name, /**< name of constraint */
237 SCIP_VAR* binvar, /**< binary indicator variable */
238 SCIP_CONS* lincons, /**< linear constraint */
239 SCIP_VAR* slackvar, /**< slack variable */
240 SCIP_Bool activeone, /**< is the constraint active when the binary is 1? */
241 SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. */
242 SCIP_Bool separate, /**< should the constraint be separated during LP processing?
243 * Usually set to TRUE. */
244 SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
245 * TRUE for model constraints, FALSE for additional, redundant constraints. */
246 SCIP_Bool check, /**< should the constraint be checked for feasibility?
247 * TRUE for model constraints, FALSE for additional, redundant constraints. */
248 SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
249 * Usually set to TRUE. */
250 SCIP_Bool local, /**< is constraint only valid locally?
251 * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
252 SCIP_Bool dynamic, /**< is constraint subject to aging?
253 * Usually set to FALSE. Set to TRUE for own cuts which
254 * are separated as constraints. */
255 SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
256 * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
257 SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even
258 * if it may be moved to a more global node?
259 * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
260 );
261
262/** creates and captures an indicator constraint with given linear constraint and slack variable
263 * in its most basic version, i. e., all constraint flags are set to their basic value as explained for the
264 * method SCIPcreateConsIndicator(); all flags can be set via SCIPsetConsFLAGNAME-methods in scip.h
265
266 * @note @a binvar is checked to be binary only later. This enables a change of the type in
267 * procedures reading an instance.
268 *
269 * @note we assume that @a slackvar actually appears in @a lincons and we also assume that it takes
270 * the role of a slack variable!
271 *
272 * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
273 *
274 * @see SCIPcreateConsIndicatorLinCons() for information about the basic constraint flag configuration
275 *
276 * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
277 */
278SCIP_EXPORT
280 SCIP* scip, /**< SCIP data structure */
281 SCIP_CONS** cons, /**< pointer to hold the created constraint */
282 const char* name, /**< name of constraint */
283 SCIP_VAR* binvar, /**< binary indicator variable */
284 SCIP_CONS* lincons, /**< linear constraint */
285 SCIP_VAR* slackvar /**< slack variable */
286 );
287
288/** creates and captures an indicator constraint with given linear constraint in a generic version, i. e., with a flag
289 * activeone indicating whether the constraint is active on value 1 or 0 of the binary variable; no slack variable is
290 * specified
291
292 * @note @a binvar is checked to be binary only later. This enables a change of the type in
293 * procedures reading an instance.
294 *
295 * @note The linear constraint has to be single sided only, i.e., either rhs or lhs have to be infinite.
296 *
297 * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
298 *
299 * @see SCIPcreateConsIndicatorLinCons() for information about the basic constraint flag configuration
300 */
301SCIP_EXPORT
303 SCIP* scip, /**< SCIP data structure */
304 SCIP_CONS** cons, /**< pointer to hold the created constraint */
305 const char* name, /**< name of constraint */
306 SCIP_VAR* binvar, /**< binary indicator variable */
307 SCIP_CONS* lincons, /**< linear constraint */
308 SCIP_Bool activeone, /**< is the constraint active when the binary is 1? */
309 SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. */
310 SCIP_Bool separate, /**< should the constraint be separated during LP processing?
311 * Usually set to TRUE. */
312 SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
313 * TRUE for model constraints, FALSE for additional, redundant constraints. */
314 SCIP_Bool check, /**< should the constraint be checked for feasibility?
315 * TRUE for model constraints, FALSE for additional, redundant constraints. */
316 SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
317 * Usually set to TRUE. */
318 SCIP_Bool local, /**< is constraint only valid locally?
319 * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
320 SCIP_Bool dynamic, /**< is constraint subject to aging?
321 * Usually set to FALSE. Set to TRUE for own cuts which
322 * are separated as constraints. */
323 SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
324 * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
325 SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even
326 * if it may be moved to a more global node?
327 * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
328 );
329
330/** creates and captures an indicator constraint with given linear constraint; no slack variable is specified
331 *
332 * @note @a binvar is checked to be binary only later. This enables a change of the type in
333 * procedures reading an instance.
334 *
335 * @note The linear constraint has to be single sided only, i.e., either rhs or lhs have to be infinite.
336 *
337 * @note the constraint gets captured, hence at one point you have to release it using the method SCIPreleaseCons()
338 */
339SCIP_EXPORT
341 SCIP* scip, /**< SCIP data structure */
342 SCIP_CONS** cons, /**< pointer to hold the created constraint */
343 const char* name, /**< name of constraint */
344 SCIP_VAR* binvar, /**< binary indicator variable */
345 SCIP_CONS* lincons, /**< linear constraint */
346 SCIP_Bool initial, /**< should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. */
347 SCIP_Bool separate, /**< should the constraint be separated during LP processing?
348 * Usually set to TRUE. */
349 SCIP_Bool enforce, /**< should the constraint be enforced during node processing?
350 * TRUE for model constraints, FALSE for additional, redundant constraints. */
351 SCIP_Bool check, /**< should the constraint be checked for feasibility?
352 * TRUE for model constraints, FALSE for additional, redundant constraints. */
353 SCIP_Bool propagate, /**< should the constraint be propagated during node processing?
354 * Usually set to TRUE. */
355 SCIP_Bool local, /**< is constraint only valid locally?
356 * Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. */
357 SCIP_Bool dynamic, /**< is constraint subject to aging?
358 * Usually set to FALSE. Set to TRUE for own cuts which
359 * are separated as constraints. */
360 SCIP_Bool removable, /**< should the relaxation be removed from the LP due to aging or cleanup?
361 * Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. */
362 SCIP_Bool stickingatnode /**< should the constraint always be kept at the node where it was added, even
363 * if it may be moved to a more global node?
364 * Usually set to FALSE. Set to TRUE to for constraints that represent node data. */
365 );
366
367/** adds variable to the inequality of the indicator constraint */
368SCIP_EXPORT
370 SCIP* scip, /**< SCIP data structure */
371 SCIP_CONS* cons, /**< indicator constraint */
372 SCIP_VAR* var, /**< variable to add to the inequality */
373 SCIP_Real val /**< value of variable */
374 );
375
376/** gets the linear constraint corresponding to the indicator constraint (may be NULL) */
377SCIP_EXPORT
379 SCIP_CONS* cons /**< indicator constraint */
380 );
381
382/** sets the linear constraint corresponding to the indicator constraint (may be NULL) */
383SCIP_EXPORT
385 SCIP* scip, /**< SCIP data structure */
386 SCIP_CONS* cons, /**< indicator constraint */
387 SCIP_CONS* lincons /**< linear constraint */
388 );
389
390/** sets binary indicator variable for indicator constraint */
391SCIP_EXPORT
393 SCIP* scip, /**< SCIP data structure */
394 SCIP_CONS* cons, /**< indicator constraint */
395 SCIP_VAR* binvar /**< binary variable to add to the inequality */
396 );
397
398/** gets activation value of an indicator constraint, TRUE for active on 1, FALSE for active on 0 */
399SCIP_EXPORT
401 SCIP_CONS* cons /**< indicator constraint */
402 );
403
404/** gets binary variable corresponding to indicator constraint. Returns the negative of the original binary variable if activeone was set to false */
405SCIP_EXPORT
407 SCIP_CONS* cons /**< indicator constraint */
408 );
409
410/** similar to SCIPgetBinaryVarIndicator but returns the original binary variable passed by the user. */
411SCIP_EXPORT
413 SCIP_CONS* cons /**< indicator constraint */
414 );
415
416/** gets slack variable corresponding to indicator constraint */
417SCIP_EXPORT
419 SCIP_CONS* cons /**< indicator constraint */
420 );
421
422/** sets upper bound for slack variable corresponding to indicator constraint
423 *
424 * Use with care if you know that the maximal violation of the corresponding constraint is at most @p ub. This bound
425 * might be improved automatically during the solution process.
426 *
427 * @pre This method should only be called if SCIP is in one of the following stages:
428 * - \ref SCIP_STAGE_INIT
429 * - \ref SCIP_STAGE_PROBLEM
430 */
431SCIP_EXPORT
433 SCIP* scip, /**< SCIP data structure */
434 SCIP_CONS* cons, /**< indicator constraint */
435 SCIP_Real ub /**< upper bound for slack variable */
436 );
437
438/** checks whether indicator constraint is violated w.r.t. sol */
439SCIP_EXPORT
441 SCIP* scip, /**< SCIP data structure */
442 SCIP_CONS* cons, /**< indicator constraint */
443 SCIP_SOL* sol /**< solution, or NULL to use current node's solution */
444 );
445
446/** based on values of other variables, computes slack and binary variable to turn constraint feasible */
447SCIP_EXPORT
449 SCIP* scip, /**< SCIP data structure */
450 SCIP_CONS* cons, /**< indicator constraint */
451 SCIP_SOL* sol, /**< solution */
452 SCIP_Bool* changed /**< pointer to store whether the solution has been changed */
453 );
454
455/** based on values of other variables, computes slack and binary variable to turn all constraints feasible */
456SCIP_EXPORT
458 SCIP* scip, /**< SCIP data structure */
459 SCIP_CONSHDLR* conshdlr, /**< indicator constraint handler */
460 SCIP_SOL* sol, /**< solution */
461 SCIP_Bool* changed /**< pointer to store whether the solution has been changed */
462 );
463
464/** adds additional linear constraint that is not connected with an indicator constraint, but can be used for separation */
465SCIP_EXPORT
467 SCIP* scip, /**< SCIP data structure */
468 SCIP_CONSHDLR* conshdlr, /**< indicator constraint handler */
469 SCIP_CONS* lincons /**< linear constraint */
470 );
471
472/** adds additional globally valid row that is not connected with an indicator constraint, but can be used for separation */
473SCIP_EXPORT
475 SCIP* scip, /**< SCIP data structure */
476 SCIP_CONSHDLR* conshdlr, /**< indicator constraint handler */
477 SCIP_ROW* row /**< row to add */
478 );
479
480/** @} */
481
482/** @} */
483
484#ifdef __cplusplus
485}
486#endif
487
488#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:173
SCIP_RETCODE SCIPcreateConsIndicatorGenericLinConsPure(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_Bool activeone, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsIndicatorLinCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsBasicIndicator(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs)
SCIP_VAR * SCIPgetBinaryVarIndicatorGeneric(SCIP_CONS *cons)
SCIP_RETCODE SCIPsetSlackVarUb(SCIP *scip, SCIP_CONS *cons, SCIP_Real ub)
SCIP_RETCODE SCIPaddRowIndicator(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_ROW *row)
SCIP_RETCODE SCIPcreateConsIndicatorGeneric(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs, SCIP_Bool activeone, SCIP_Bool lessthanineq, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPaddLinearConsIndicator(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONS *lincons)
SCIP_RETCODE SCIPsetLinearConsIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_CONS *lincons)
SCIP_RETCODE SCIPcreateConsIndicator(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, int nvars, SCIP_VAR **vars, SCIP_Real *vals, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsIndicatorGenericLinCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar, SCIP_Bool activeone, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_RETCODE SCIPcreateConsBasicIndicatorLinCons(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_VAR *slackvar)
SCIP_RETCODE SCIPmakeIndicatorsFeasible(SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_SOL *sol, SCIP_Bool *changed)
SCIP_VAR * SCIPgetBinaryVarIndicator(SCIP_CONS *cons)
SCIP_VAR * SCIPgetSlackVarIndicator(SCIP_CONS *cons)
SCIP_CONS * SCIPgetLinearConsIndicator(SCIP_CONS *cons)
SCIP_RETCODE SCIPsetBinaryVarIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *binvar)
SCIP_RETCODE SCIPmakeIndicatorFeasible(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *changed)
SCIP_RETCODE SCIPcreateConsIndicatorLinConsPure(SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *binvar, SCIP_CONS *lincons, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode)
SCIP_Bool SCIPisViolatedIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol)
SCIP_RETCODE SCIPaddVarIndicator(SCIP *scip, SCIP_CONS *cons, SCIP_VAR *var, SCIP_Real val)
SCIP_Bool SCIPgetActiveOnIndicator(SCIP_CONS *cons)
SCIP_RETCODE SCIPincludeConshdlrIndicator(SCIP *scip)
type definitions for constraints and constraint handlers
type definitions for LP management
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
type definitions for problem variables