Scippy

SCIP

Solving Constraint Integer Programs

cons_conjunction.c File Reference

Detailed Description

constraint handler for conjunction constraints

Author
Tobias Achterberg

Definition in file cons_conjunction.c.

#include <assert.h>
#include <string.h>
#include <limits.h>
#include "scip/cons_conjunction.h"

Go to the source code of this file.

Macros

#define CONSHDLR_NAME   "conjunction"
 
#define CONSHDLR_DESC   "conjunction of constraints"
 
#define CONSHDLR_ENFOPRIORITY   +900000
 
#define CONSHDLR_CHECKPRIORITY   -900000
 
#define CONSHDLR_EAGERFREQ   100
 
#define CONSHDLR_MAXPREROUNDS   -1
 
#define CONSHDLR_NEEDSCONS   TRUE
 
#define CONSHDLR_PRESOLTIMING   SCIP_PRESOLTIMING_FAST
 

Functions

static SCIP_RETCODE consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, SCIP_CONS **conss, int nconss)
 
static SCIP_RETCODE consdataFree (SCIP *scip, SCIP_CONSDATA **consdata)
 
static SCIP_RETCODE consdataAddCons (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_CONS *cons)
 
static SCIP_RETCODE addAllConss (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_RESULT *result)
 
static SCIP_RETCODE checkAllConss (SCIP *scip, SCIP_CONS **conss, int nconss, SCIP_SOL *sol, SCIP_Bool checkintegrality, SCIP_Bool checklprows, SCIP_Bool printreason, SCIP_Bool completely, SCIP_RESULT *result)
 
static SCIP_DECL_CONSHDLRCOPY (conshdlrCopyConjunction)
 
static SCIP_DECL_CONSDELETE (consDeleteConjunction)
 
static SCIP_DECL_CONSTRANS (consTransConjunction)
 
static SCIP_DECL_CONSENFOLP (consEnfolpConjunction)
 
static SCIP_DECL_CONSENFORELAX (consEnforelaxConjunction)
 
static SCIP_DECL_CONSENFOPS (consEnfopsConjunction)
 
static SCIP_DECL_CONSCHECK (consCheckConjunction)
 
static SCIP_DECL_CONSPRESOL (consPresolConjunction)
 
static SCIP_DECL_CONSLOCK (consLockConjunction)
 
static SCIP_DECL_CONSPRINT (consPrintConjunction)
 
static SCIP_DECL_CONSPARSE (consParseConjunction)
 
static SCIP_DECL_CONSCOPY (consCopyConjunction)
 
SCIP_RETCODE SCIPincludeConshdlrConjunction (SCIP *scip)
 
SCIP_RETCODE SCIPcreateConsConjunction (SCIP *scip, SCIP_CONS **cons, const char *name, int nconss, SCIP_CONS **conss, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic)
 
SCIP_RETCODE SCIPcreateConsBasicConjunction (SCIP *scip, SCIP_CONS **cons, const char *name, int nconss, SCIP_CONS **conss)
 
SCIP_RETCODE SCIPaddConsElemConjunction (SCIP *scip, SCIP_CONS *cons, SCIP_CONS *addcons)
 

Macro Definition Documentation

◆ CONSHDLR_NAME

#define CONSHDLR_NAME   "conjunction"

◆ CONSHDLR_DESC

#define CONSHDLR_DESC   "conjunction of constraints"

Definition at line 32 of file cons_conjunction.c.

Referenced by SCIPincludeConshdlrConjunction().

◆ CONSHDLR_ENFOPRIORITY

#define CONSHDLR_ENFOPRIORITY   +900000

priority of the constraint handler for constraint enforcing

Definition at line 33 of file cons_conjunction.c.

Referenced by SCIPincludeConshdlrConjunction().

◆ CONSHDLR_CHECKPRIORITY

#define CONSHDLR_CHECKPRIORITY   -900000

priority of the constraint handler for checking feasibility

Definition at line 34 of file cons_conjunction.c.

Referenced by SCIPincludeConshdlrConjunction().

◆ CONSHDLR_EAGERFREQ

#define CONSHDLR_EAGERFREQ   100

frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only

Definition at line 35 of file cons_conjunction.c.

Referenced by SCIPincludeConshdlrConjunction().

◆ CONSHDLR_MAXPREROUNDS

#define CONSHDLR_MAXPREROUNDS   -1

maximal number of presolving rounds the constraint handler participates in (-1: no limit)

Definition at line 38 of file cons_conjunction.c.

Referenced by SCIPincludeConshdlrConjunction().

◆ CONSHDLR_NEEDSCONS

#define CONSHDLR_NEEDSCONS   TRUE

should the constraint handler be skipped, if no constraints are available?

Definition at line 39 of file cons_conjunction.c.

Referenced by SCIPincludeConshdlrConjunction().

◆ CONSHDLR_PRESOLTIMING

#define CONSHDLR_PRESOLTIMING   SCIP_PRESOLTIMING_FAST

Definition at line 41 of file cons_conjunction.c.

Referenced by SCIPincludeConshdlrConjunction().

Function Documentation

◆ consdataCreate()

static SCIP_RETCODE consdataCreate ( SCIP scip,
SCIP_CONSDATA **  consdata,
SCIP_CONS **  conss,
int  nconss 
)
static

creates conjunction constraint data, captures initial constraints of conjunction

Parameters
scipSCIP data structure
consdatapointer to constraint data
conssinitial constraint in conjunction
nconssnumber of initial constraints in conjunction

Definition at line 62 of file cons_conjunction.c.

References consdataFree(), SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPcaptureCons(), SCIPduplicateBlockMemoryArray, SCIPisTransformed(), and SCIPtransformConss().

Referenced by SCIPcreateConsConjunction().

◆ consdataFree()

static SCIP_RETCODE consdataFree ( SCIP scip,
SCIP_CONSDATA **  consdata 
)
static

frees constraint data and releases all constraints in conjunction

Parameters
scipSCIP data structure
consdatapointer to constraint data

Definition at line 104 of file cons_conjunction.c.

References consdataAddCons(), SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArrayNull, and SCIPreleaseCons().

Referenced by consdataCreate(), and SCIP_DECL_CONSDELETE().

◆ consdataAddCons()

static SCIP_RETCODE consdataAddCons ( SCIP scip,
SCIP_CONSDATA consdata,
SCIP_CONS cons 
)
static

adds constraint to conjunction

Parameters
scipSCIP data structure
consdataconstraint data
consconstraint to add to the conjunction

Definition at line 129 of file cons_conjunction.c.

References addAllConss(), SCIP_CALL, SCIP_OKAY, SCIPcaptureCons(), SCIPensureBlockMemoryArray, SCIPisTransformed(), and SCIPtransformCons().

Referenced by consdataFree(), and SCIPaddConsElemConjunction().

◆ addAllConss()

static SCIP_RETCODE addAllConss ( SCIP scip,
SCIP_CONS **  conss,
int  nconss,
SCIP_RESULT result 
)
static

adds all constraints in conjunction constraints to the problem; disables unmodifiable conjunction constraints

Parameters
scipSCIP data structure
conssactive conjunction constraints
nconssnumber of active conjunction constraints
resultpointer to store the result

Definition at line 161 of file cons_conjunction.c.

References checkAllConss(), SCIP_CALL, SCIP_CONSADDED, SCIP_OKAY, SCIPaddConsLocal(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsModifiable(), SCIPdebugMsg, SCIPdelConsLocal(), SCIPsetConsChecked(), and TRUE.

Referenced by consdataAddCons(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), and SCIP_DECL_CONSENFORELAX().

◆ checkAllConss()

static SCIP_RETCODE checkAllConss ( SCIP scip,
SCIP_CONS **  conss,
int  nconss,
SCIP_SOL sol,
SCIP_Bool  checkintegrality,
SCIP_Bool  checklprows,
SCIP_Bool  printreason,
SCIP_Bool  completely,
SCIP_RESULT result 
)
static

checks all constraints in conjunction constraints for feasibility

Parameters
scipSCIP data structure
conssactive conjunction constraints
nconssnumber of active conjunction constraints
solsolution to check
checkintegralityHas integrality to be checked?
checklprowsDo constraints represented by rows in the current LP have to be checked?
printreasonShould the reason for the violation be printed?
completelyShould all violations be checked?
resultpointer to store the result

Definition at line 210 of file cons_conjunction.c.

References SCIP_CALL, SCIP_DECL_CONSHDLRCOPY(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPcheckCons(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebug, SCIPinfoMessage(), SCIPprintCons(), and SCIPupdateSolConsViolation().

Referenced by addAllConss(), and SCIP_DECL_CONSCHECK().

◆ SCIP_DECL_CONSHDLRCOPY()

static SCIP_DECL_CONSHDLRCOPY ( conshdlrCopyConjunction  )
static

copy method for constraint handler plugins (called when SCIP copies plugins)

Definition at line 272 of file cons_conjunction.c.

References CONSHDLR_NAME, SCIP_CALL, SCIP_DECL_CONSDELETE(), SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrConjunction(), and TRUE.

Referenced by checkAllConss().

◆ SCIP_DECL_CONSDELETE()

static SCIP_DECL_CONSDELETE ( consDeleteConjunction  )
static

frees specific constraint data

Definition at line 289 of file cons_conjunction.c.

References consdataFree(), SCIP_CALL, SCIP_DECL_CONSTRANS(), and SCIP_OKAY.

Referenced by SCIP_DECL_CONSHDLRCOPY().

◆ SCIP_DECL_CONSTRANS()

◆ SCIP_DECL_CONSENFOLP()

static SCIP_DECL_CONSENFOLP ( consEnfolpConjunction  )
static

constraint enforcing method of constraint handler for LP solutions

Definition at line 340 of file cons_conjunction.c.

References addAllConss(), SCIP_CALL, SCIP_DECL_CONSENFORELAX(), SCIP_FEASIBLE, and SCIP_OKAY.

Referenced by SCIP_DECL_CONSTRANS().

◆ SCIP_DECL_CONSENFORELAX()

static SCIP_DECL_CONSENFORELAX ( consEnforelaxConjunction  )
static

constraint enforcing method of constraint handler for relaxation solutions

Definition at line 353 of file cons_conjunction.c.

References addAllConss(), SCIP_CALL, SCIP_DECL_CONSENFOPS(), SCIP_FEASIBLE, and SCIP_OKAY.

Referenced by SCIP_DECL_CONSENFOLP().

◆ SCIP_DECL_CONSENFOPS()

static SCIP_DECL_CONSENFOPS ( consEnfopsConjunction  )
static

constraint enforcing method of constraint handler for pseudo solutions

Definition at line 366 of file cons_conjunction.c.

References addAllConss(), SCIP_CALL, SCIP_DECL_CONSCHECK(), SCIP_FEASIBLE, and SCIP_OKAY.

Referenced by SCIP_DECL_CONSENFORELAX().

◆ SCIP_DECL_CONSCHECK()

static SCIP_DECL_CONSCHECK ( consCheckConjunction  )
static

feasibility check method of constraint handler for integral solutions

Definition at line 379 of file cons_conjunction.c.

References checkAllConss(), SCIP_CALL, SCIP_DECL_CONSPRESOL(), SCIP_FEASIBLE, and SCIP_OKAY.

Referenced by SCIP_DECL_CONSENFOPS().

◆ SCIP_DECL_CONSPRESOL()

static SCIP_DECL_CONSPRESOL ( consPresolConjunction  )
static

◆ SCIP_DECL_CONSLOCK()

static SCIP_DECL_CONSLOCK ( consLockConjunction  )
static

variable rounding lock method of constraint handler

Definition at line 448 of file cons_conjunction.c.

References SCIP_CALL, SCIP_DECL_CONSPRINT(), SCIP_OKAY, SCIPaddConsLocks(), and SCIPconsGetData().

Referenced by SCIP_DECL_CONSPRESOL().

◆ SCIP_DECL_CONSPRINT()

static SCIP_DECL_CONSPRINT ( consPrintConjunction  )
static

constraint display method of constraint handler

Definition at line 468 of file cons_conjunction.c.

References SCIP_CALL, SCIP_DECL_CONSPARSE(), SCIP_OKAY, SCIPconsGetData(), SCIPinfoMessage(), and SCIPprintCons().

Referenced by SCIP_DECL_CONSLOCK().

◆ SCIP_DECL_CONSPARSE()

static SCIP_DECL_CONSPARSE ( consParseConjunction  )
static

◆ SCIP_DECL_CONSCOPY()