Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

type definitions for problem variables

Author
Tobias Achterberg

This file defines the interface for user variable data implemented in C. Each variable can be equipped with a variable data struct. This data can be accessed via the function SCIPgetVardata() at any time after it is created and before it is deleted.

Definition in file type_var.h.

Go to the source code of this file.

Macros

#define NLOCKTYPES   2
 
#define SCIP_DECL_VARDELORIG(x)   SCIP_RETCODE x (SCIP* scip, SCIP_VAR* var, SCIP_VARDATA** vardata)
 
#define SCIP_DECL_VARTRANS(x)   SCIP_RETCODE x (SCIP* scip, SCIP_VAR* sourcevar, SCIP_VARDATA* sourcedata, SCIP_VAR* targetvar, SCIP_VARDATA** targetdata)
 
#define SCIP_DECL_VARDELTRANS(x)   SCIP_RETCODE x (SCIP* scip, SCIP_VAR* var, SCIP_VARDATA** vardata)
 
#define SCIP_DECL_VARCOPY(x)
 

Typedefs

typedef enum SCIP_Varstatus SCIP_VARSTATUS
 
typedef enum SCIP_Vartype SCIP_VARTYPE
 
typedef enum SCIP_DomchgType SCIP_DOMCHGTYPE
 
typedef enum SCIP_BoundchgType SCIP_BOUNDCHGTYPE
 
typedef enum SCIP_LockType SCIP_LOCKTYPE
 
typedef struct SCIP_DomChgBound SCIP_DOMCHGBOUND
 
typedef struct SCIP_DomChgBoth SCIP_DOMCHGBOTH
 
typedef struct SCIP_DomChgDyn SCIP_DOMCHGDYN
 
typedef union SCIP_DomChg SCIP_DOMCHG
 
typedef struct SCIP_BoundChg SCIP_BOUNDCHG
 
typedef struct SCIP_BdChgIdx SCIP_BDCHGIDX
 
typedef struct SCIP_BdChgInfo SCIP_BDCHGINFO
 
typedef struct SCIP_BranchingData SCIP_BRANCHINGDATA
 
typedef struct SCIP_InferenceData SCIP_INFERENCEDATA
 
typedef struct SCIP_HoleChg SCIP_HOLECHG
 
typedef struct SCIP_Hole SCIP_HOLE
 
typedef struct SCIP_Holelist SCIP_HOLELIST
 
typedef struct SCIP_Dom SCIP_DOM
 
typedef struct SCIP_Original SCIP_ORIGINAL
 
typedef struct SCIP_Aggregate SCIP_AGGREGATE
 
typedef struct SCIP_Multaggr SCIP_MULTAGGR
 
typedef struct SCIP_Negate SCIP_NEGATE
 
typedef struct SCIP_Var SCIP_VAR
 
typedef struct SCIP_VarData SCIP_VARDATA
 

Enumerations

enum  SCIP_Varstatus {
  SCIP_VARSTATUS_ORIGINAL = 0,
  SCIP_VARSTATUS_LOOSE = 1,
  SCIP_VARSTATUS_COLUMN = 2,
  SCIP_VARSTATUS_FIXED = 3,
  SCIP_VARSTATUS_AGGREGATED = 4,
  SCIP_VARSTATUS_MULTAGGR = 5,
  SCIP_VARSTATUS_NEGATED = 6
}
 
enum  SCIP_Vartype {
  SCIP_VARTYPE_BINARY = 0,
  SCIP_VARTYPE_INTEGER = 1,
  SCIP_VARTYPE_IMPLINT = 2,
  SCIP_VARTYPE_CONTINUOUS = 3
}
 
enum  SCIP_DomchgType {
  SCIP_DOMCHGTYPE_DYNAMIC = 0,
  SCIP_DOMCHGTYPE_BOTH = 1,
  SCIP_DOMCHGTYPE_BOUND = 2
}
 
enum  SCIP_BoundchgType {
  SCIP_BOUNDCHGTYPE_BRANCHING = 0,
  SCIP_BOUNDCHGTYPE_CONSINFER = 1,
  SCIP_BOUNDCHGTYPE_PROPINFER = 2
}
 
enum  SCIP_LockType {
  SCIP_LOCKTYPE_MODEL = 0,
  SCIP_LOCKTYPE_CONFLICT = 1
}
 

Macro Definition Documentation

◆ NLOCKTYPES

◆ SCIP_DECL_VARDELORIG

#define SCIP_DECL_VARDELORIG (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_VAR* var, SCIP_VARDATA** vardata)

frees user data of original variable (called when the original variable is freed)

This method should free the user data of the original variable.

input:

  • scip : SCIP main data structure
  • var : original variable the data to free is belonging to
  • vardata : pointer to the user variable data to free

Definition at line 118 of file type_var.h.

◆ SCIP_DECL_VARTRANS

#define SCIP_DECL_VARTRANS (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_VAR* sourcevar, SCIP_VARDATA* sourcedata, SCIP_VAR* targetvar, SCIP_VARDATA** targetdata)

creates transformed variable for original user variable

Because the original variable and the user data of the original variable should not be modified during the solving process, a transformed variable is created as a copy of the original variable. If the user variable data is never modified during the solving process anyways, it is enough to simple copy the user data's pointer. This is the default implementation, which is used when a NULL is given as VARTRANS method. If the user data may be modified during the solving process (e.g. during preprocessing), the VARTRANS method must be given and has to copy the user variable data to a different memory location.

input:

  • scip : SCIP main data structure
  • sourcevar : original variable
  • sourcedata : source variable data to transform
  • targetvar : transformed variable
  • targetdata : pointer to store created transformed variable data

Definition at line 138 of file type_var.h.

◆ SCIP_DECL_VARDELTRANS

#define SCIP_DECL_VARDELTRANS (   x)    SCIP_RETCODE x (SCIP* scip, SCIP_VAR* var, SCIP_VARDATA** vardata)

frees user data of transformed variable (called when the transformed variable is freed)

This method has to be implemented, if the VARTRANS method is not a simple pointer copy operation like in the default VARTRANS implementation. It should free the user data of the transformed variable, that was created in the VARTRANS method.

input:

  • scip : SCIP main data structure
  • var : transformed variable the data to free is belonging to
  • vardata : pointer to the user variable data to free

Definition at line 151 of file type_var.h.

◆ SCIP_DECL_VARCOPY

#define SCIP_DECL_VARCOPY (   x)
Value:
SCIP_RETCODE x (SCIP* scip, SCIP* sourcescip, SCIP_VAR* sourcevar, SCIP_VARDATA* sourcedata, \
SCIP_HASHMAP* varmap, SCIP_HASHMAP* consmap, SCIP_VAR* targetvar, SCIP_VARDATA** targetdata, SCIP_RESULT* result)
enum SCIP_Result SCIP_RESULT
Definition: type_result.h:52
struct SCIP_VarData SCIP_VARDATA
Definition: type_var.h:107
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
SCIP_VAR ** x
Definition: circlepacking.c:54

copies variable data of source SCIP variable for the target SCIP variable

This method should copy the variable data of the source SCIP and create a target variable data for target variable. This callback is optimal. If the copying process was successful the target variable gets this variable data assigned. In case the result pointer is set to SCIP_DIDNOTRUN the target variable will have no variable data at all.

The variable map and the constraint map can be used via the function SCIPgetVarCopy() and SCIPgetConsCopy(), respectively, to get for certain variables and constraints of the source SCIP the counter parts in the target SCIP. You should be very carefully in using these two methods since they could lead to infinity loop.

input:

  • scip : target SCIP data structure
  • sourcescip : source SCIP main data structure
  • sourcevar : variable of the source SCIP
  • sourcedata : variable data of the source variable which should get copied
  • varmap, : a hashmap which stores the mapping of source variables to corresponding target variables
  • consmap, : a hashmap which stores the mapping of source constraints to corresponding target constraints
  • targetvar : variable of the (target) SCIP (targetvar is the copy of sourcevar)
  • targetdata : pointer to store created copy of the variable data for the (target) SCIP

output:

  • result : pointer to store the result of the call

possible return values for *result:

  • SCIP_DIDNOTRUN : the copying process was not performed
  • SCIP_SUCCESS : the copying process was successfully performed

Definition at line 181 of file type_var.h.

Typedef Documentation

◆ SCIP_VARSTATUS

Definition at line 48 of file type_var.h.

◆ SCIP_VARTYPE

typedef enum SCIP_Vartype SCIP_VARTYPE

Definition at line 60 of file type_var.h.

◆ SCIP_DOMCHGTYPE

Definition at line 69 of file type_var.h.

◆ SCIP_BOUNDCHGTYPE

Definition at line 78 of file type_var.h.

◆ SCIP_LOCKTYPE

Definition at line 87 of file type_var.h.

◆ SCIP_DOMCHGBOUND

static domain change data for bound changes

Definition at line 89 of file type_var.h.

◆ SCIP_DOMCHGBOTH

static domain change data for bound and hole changes

Definition at line 90 of file type_var.h.

◆ SCIP_DOMCHGDYN

dynamic domain change data for bound and hole changes

Definition at line 91 of file type_var.h.

◆ SCIP_DOMCHG

typedef union SCIP_DomChg SCIP_DOMCHG

changes in domains of variables

Definition at line 92 of file type_var.h.

◆ SCIP_BOUNDCHG

typedef struct SCIP_BoundChg SCIP_BOUNDCHG

changes in bounds of variables

Definition at line 93 of file type_var.h.

◆ SCIP_BDCHGIDX

typedef struct SCIP_BdChgIdx SCIP_BDCHGIDX

bound change index in path from root to current node

Definition at line 94 of file type_var.h.

◆ SCIP_BDCHGINFO

bound change information to track bound changes from root to current node

Definition at line 95 of file type_var.h.

◆ SCIP_BRANCHINGDATA

typedef struct SCIP_BranchingData SCIP_BRANCHINGDATA

data for branching decision bound changes

Definition at line 96 of file type_var.h.

◆ SCIP_INFERENCEDATA

typedef struct SCIP_InferenceData SCIP_INFERENCEDATA

data for inferred bound changes

Definition at line 97 of file type_var.h.

◆ SCIP_HOLECHG

typedef struct SCIP_HoleChg SCIP_HOLECHG

changes in holelist of variables

Definition at line 98 of file type_var.h.

◆ SCIP_HOLE

typedef struct SCIP_Hole SCIP_HOLE

hole in a domain of an integer variable

Definition at line 99 of file type_var.h.

◆ SCIP_HOLELIST

typedef struct SCIP_Holelist SCIP_HOLELIST

list of holes in a domain of an integer variable

Definition at line 100 of file type_var.h.

◆ SCIP_DOM

typedef struct SCIP_Dom SCIP_DOM

datastructures for storing domains of variables

Definition at line 101 of file type_var.h.

◆ SCIP_ORIGINAL

typedef struct SCIP_Original SCIP_ORIGINAL

original variable information

Definition at line 102 of file type_var.h.

◆ SCIP_AGGREGATE

aggregation information

Definition at line 103 of file type_var.h.

◆ SCIP_MULTAGGR

typedef struct SCIP_Multaggr SCIP_MULTAGGR

multiple aggregation information

Definition at line 104 of file type_var.h.

◆ SCIP_NEGATE

typedef struct SCIP_Negate SCIP_NEGATE

negation information

Definition at line 105 of file type_var.h.

◆ SCIP_VAR

typedef struct SCIP_Var SCIP_VAR

variable of the problem

Definition at line 106 of file type_var.h.

◆ SCIP_VARDATA

typedef struct SCIP_VarData SCIP_VARDATA

user variable data

Definition at line 107 of file type_var.h.

Enumeration Type Documentation

◆ SCIP_Varstatus

status of problem variables

Enumerator
SCIP_VARSTATUS_ORIGINAL 

variable belongs to original problem

SCIP_VARSTATUS_LOOSE 

variable is a loose variable of the transformed problem

SCIP_VARSTATUS_COLUMN 

variable is a column of the transformed problem

SCIP_VARSTATUS_FIXED 

variable is fixed to specific value in the transformed problem

SCIP_VARSTATUS_AGGREGATED 

variable is aggregated to x = a*y + c in the transformed problem

SCIP_VARSTATUS_MULTAGGR 

variable is aggregated to x = a_1*y_1 + ... + a_k*y_k + c

SCIP_VARSTATUS_NEGATED 

variable is the negation of an original or transformed variable

Definition at line 38 of file type_var.h.

◆ SCIP_Vartype

variable type

Enumerator
SCIP_VARTYPE_BINARY 

binary variable: \( x \in \{0,1\} \)

SCIP_VARTYPE_INTEGER 

integer variable: \( x in \{lb, \dots, ub\} \)

SCIP_VARTYPE_IMPLINT 

implicit integer variable: Integrality of this variable is implied for every optimal solution of the remaining problem after any fixing all integer and binary variables, without the explicit need to enforce integrality further

SCIP_VARTYPE_CONTINUOUS 

continuous variable: \( lb \leq x \leq ub \)

Definition at line 51 of file type_var.h.

◆ SCIP_DomchgType

domain change data type

Enumerator
SCIP_DOMCHGTYPE_DYNAMIC 

dynamic bound changes with size information of arrays

SCIP_DOMCHGTYPE_BOTH 

static domain changes: number of entries equals size of arrays

SCIP_DOMCHGTYPE_BOUND 

static domain changes without any hole changes

Definition at line 63 of file type_var.h.

◆ SCIP_BoundchgType

bound change type

Enumerator
SCIP_BOUNDCHGTYPE_BRANCHING 

bound change was due to a branching decision

SCIP_BOUNDCHGTYPE_CONSINFER 

bound change was due to an inference of a constraint (domain propagation)

SCIP_BOUNDCHGTYPE_PROPINFER 

bound change was due to an inference of a domain propagator

Definition at line 72 of file type_var.h.

◆ SCIP_LockType

Enumerator
SCIP_LOCKTYPE_MODEL 

variable locks for model and check constraints

SCIP_LOCKTYPE_CONFLICT 

variable locks for conflict constraints

Definition at line 82 of file type_var.h.