methods for implications, variable bounds, and clique tables
Definition in file implics.c.
#include "scip/event.h"
#include "scip/implics.h"
#include "scip/misc.h"
#include "scip/pub_implics.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_var.h"
#include "scip/set.h"
#include "scip/struct_implics.h"
#include "scip/struct_set.h"
#include "scip/struct_stat.h"
#include "scip/var.h"
Go to the source code of this file.
Macros | |
#define | cliqueCheck(clique) |
#define | HASHTABLE_CLIQUETABLE_SIZE 100 |
#define | checkNEntries(cliquetable) |
#define cliqueCheck | ( | clique | ) |
Definition at line 1417 of file implics.c.
Referenced by SCIPcliquelistRemoveFromCliques(), SCIPcliquetableAdd(), and SCIPcliquetableCleanup().
#define HASHTABLE_CLIQUETABLE_SIZE 100 |
Definition at line 1783 of file implics.c.
Referenced by SCIPcliquetableCreate().
#define checkNEntries | ( | cliquetable | ) |
|
static |
creates a variable bounds data structure
vbounds | pointer to store variable bounds data structure |
blkmem | block memory |
Definition at line 55 of file implics.c.
References assert(), BMSallocBlockMemory, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by vboundsEnsureSize().
void SCIPvboundsFree | ( | SCIP_VBOUNDS ** | vbounds, |
BMS_BLKMEM * | blkmem ) |
frees a variable bounds data structure
vbounds | pointer to store variable bounds data structure |
blkmem | block memory |
Definition at line 73 of file implics.c.
References assert(), BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.
Referenced by SCIPvarAggregate(), SCIPvarRemove(), SCIPvboundsDel(), SCIPvboundsShrink(), and varFree().
|
static |
ensures, that variable bounds arrays can store at least num entries
vbounds | pointer to variable bounds data structure |
blkmem | block memory |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 91 of file implics.c.
References assert(), BMSreallocBlockMemoryArray, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and vboundsCreate().
Referenced by SCIPvboundsAdd().
|
static |
binary searches the insertion position of the given variable in the vbounds data structure
vbounds | variable bounds data structure, or NULL |
var | variable to search in vbounds data structure |
negativecoef | is coefficient b negative? |
insertpos | pointer to store position where to insert new entry |
found | pointer to store whether the same variable was found at the returned pos |
Definition at line 125 of file implics.c.
References assert(), SCIP_VBounds::coefs, FALSE, SCIP_VBounds::len, NULL, SCIP_Bool, SCIP_OKAY, SCIPsortedvecFindPtr(), TRUE, var, and SCIP_VBounds::vars.
Referenced by SCIPvboundsAdd(), and SCIPvboundsDel().
SCIP_RETCODE SCIPvboundsAdd | ( | SCIP_VBOUNDS ** | vbounds, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_BOUNDTYPE | vboundtype, | ||
SCIP_VAR * | var, | ||
SCIP_Real | coef, | ||
SCIP_Real | constant, | ||
SCIP_Bool * | added ) |
adds a variable bound to the variable bounds data structure
vbounds | pointer to variable bounds data structure |
blkmem | block memory |
set | global SCIP settings |
vboundtype | type of variable bound (LOWER or UPPER) |
var | variable z in x <= b*z + d or x >= b*z + d |
coef | coefficient b in x <= b*z + d or x >= b*z + d |
constant | constant d in x <= b*z + d or x >= b*z + d |
added | pointer to store whether the variable bound was added |
Definition at line 206 of file implics.c.
References assert(), FALSE, i, MAX, MIN, NULL, SCIP_Bool, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIP_VARTYPE_CONTINUOUS, SCIPsetIsZero(), SCIPvarGetStatus(), SCIPvarGetType(), TRUE, var, vboundsEnsureSize(), and vboundsSearchPos().
Referenced by varAddVbound().
SCIP_RETCODE SCIPvboundsDel | ( | SCIP_VBOUNDS ** | vbounds, |
BMS_BLKMEM * | blkmem, | ||
SCIP_VAR * | vbdvar, | ||
SCIP_Bool | negativecoef ) |
removes from variable x a variable bound x >=/<= b*z + d with binary or integer z
vbounds | pointer to variable bounds data structure |
blkmem | block memory |
vbdvar | variable z in x >=/<= b*z + d |
negativecoef | is coefficient b negative? |
Definition at line 288 of file implics.c.
References assert(), i, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPvboundsFree(), and vboundsSearchPos().
Referenced by SCIPvarRemoveCliquesImplicsVbs().
void SCIPvboundsShrink | ( | SCIP_VBOUNDS ** | vbounds, |
BMS_BLKMEM * | blkmem, | ||
int | newnvbds ) |
reduces the number of variable bounds stored in the given variable bounds data structure
vbounds | pointer to variable bounds data structure |
blkmem | block memory |
newnvbds | new number of variable bounds |
Definition at line 333 of file implics.c.
References assert(), NULL, and SCIPvboundsFree().
Referenced by SCIPvarRemoveCliquesImplicsVbs().
|
static |
comparator function for implication variables in the implication data structure
Definition at line 359 of file implics.c.
References assert(), NULL, and SCIPvarGetIndex().
|
static |
performs integrity check on implications data structure
implics | implications data structure |
Definition at line 383 of file implics.c.
References assert(), FALSE, i, SCIP_Implics::nimpls, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, TRUE, SCIP_Implics::types, SCIP_Implics::vars, and vars.
Referenced by SCIPimplicsAdd(), and SCIPimplicsDel().
|
static |
creates an implications data structure
implics | pointer to store implications data structure |
blkmem | block memory |
Definition at line 425 of file implics.c.
References assert(), BMSallocBlockMemory, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by implicsEnsureSize().
void SCIPimplicsFree | ( | SCIP_IMPLICS ** | implics, |
BMS_BLKMEM * | blkmem ) |
frees an implications data structure
implics | pointer of implications data structure to free |
blkmem | block memory |
Definition at line 451 of file implics.c.
References assert(), BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.
Referenced by SCIPimplicsDel(), SCIPvarAggregate(), SCIPvarRemove(), SCIPvarRemoveCliquesImplicsVbs(), and varFree().
|
static |
ensures, that arrays for x == 0 or x == 1 in implications data structure can store at least num entries
implics | pointer to implications data structure |
blkmem | block memory |
set | global SCIP settings |
varfixing | FALSE if size of arrays for x == 0 has to be ensured, TRUE for x == 1 |
num | minimum number of entries to store |
Definition at line 474 of file implics.c.
References assert(), BMSreallocBlockMemoryArray, implicsCreate(), NULL, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by SCIPimplicsAdd().
|
static |
gets the positions of the implications y >= l and y <= u in the implications data structure; if no lower or upper bound implication for y was found, -1 is returned
implics | implications data structure |
varfixing | FALSE if y is searched in implications for x == 0, TRUE for x == 1 |
implvar | variable y to search for |
poslower | pointer to store position of y_lower (-1 if not found) |
posupper | pointer to store position of y_upper (-1 if not found) |
posadd | pointer to store position of first y entry, or where a new y entry should be placed |
Definition at line 512 of file implics.c.
References assert(), SCIP_Implics::nimpls, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIPsortedvecFindPtr(), SCIP_Implics::types, and SCIP_Implics::vars.
Referenced by implicsSearchImplic(), SCIPimplicsGetVarImplicPoss(), and SCIPimplicsGetVarImplics().
|
static |
returns whether variable y is already contained in implications for x == 0 or x == 1 with the given impltype y can be contained in structure with y >= b (y_lower) and y <= b (y_upper)
implics | implications data structure |
varfixing | FALSE if y is searched in implications for x == 0, TRUE for x == 1 |
implvar | variable y to search for |
impltype | type of implication y <=/>= b to search for |
poslower | pointer to store position of y_lower (inf if not found) |
posupper | pointer to store position of y_upper (inf if not found) |
posadd | pointer to store correct position (with respect to impltype) to add y |
Definition at line 596 of file implics.c.
References assert(), implicsSearchVar(), NULL, SCIP_Bool, and SCIP_BOUNDTYPE_LOWER.
Referenced by SCIPimplicsAdd(), SCIPimplicsContainsImpl(), and SCIPimplicsDel().
SCIP_RETCODE SCIPimplicsAdd | ( | SCIP_IMPLICS ** | implics, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_STAT * | stat, | ||
SCIP_Bool | varfixing, | ||
SCIP_VAR * | implvar, | ||
SCIP_BOUNDTYPE | impltype, | ||
SCIP_Real | implbound, | ||
SCIP_Bool | isshortcut, | ||
SCIP_Bool * | conflict, | ||
SCIP_Bool * | added ) |
adds an implication x == 0/1 -> y <= b or y >= b to the implications data structure; the implication must be non-redundant
implics | pointer to implications data structure |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
varfixing | FALSE if implication for x == 0 has to be added, TRUE for x == 1 |
implvar | variable y in implication y <= b or y >= b |
impltype | type of implication y <= b (SCIP_BOUNDTYPE_UPPER) or y >= b (SCIP_BOUNDTYPE_LOWER) |
implbound | bound b in implication y <= b or y >= b |
isshortcut | is the implication a shortcut, i.e., added as part of the transitive closure of another implication? |
conflict | pointer to store whether implication causes a conflict for variable x |
added | pointer to store whether the implication was added |
Definition at line 633 of file implics.c.
References assert(), BMSmoveMemoryArray, checkImplics(), FALSE, implicsEnsureSize(), implicsSearchImplic(), SCIP_Stat::nimplications, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetDebugMsg, SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLE(), SCIPsetIsFeasLT(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), and TRUE.
Referenced by varAddImplic().
SCIP_RETCODE SCIPimplicsDel | ( | SCIP_IMPLICS ** | implics, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_Bool | varfixing, | ||
SCIP_VAR * | implvar, | ||
SCIP_BOUNDTYPE | impltype ) |
removes the implication x <= 0 or x >= 1 ==> y <= b or y >= b from the implications data structure
implics | pointer to implications data structure |
blkmem | block memory |
set | global SCIP settings |
varfixing | FALSE if y should be removed from implications for x <= 0, TRUE for x >= 1 |
implvar | variable y in implication y <= b or y >= b |
impltype | type of implication y <= b (SCIP_BOUNDTYPE_UPPER) or y >= b (SCIP_BOUNDTYPE_LOWER) |
Definition at line 836 of file implics.c.
References assert(), BMSmoveMemoryArray, checkImplics(), implicsSearchImplic(), NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_OKAY, SCIPimplicsFree(), SCIPsetDebugMsg, and SCIPvarGetName().
Referenced by SCIPvarRemoveCliquesImplicsVbs().
void SCIPimplicsGetVarImplics | ( | SCIP_IMPLICS * | implics, |
SCIP_Bool | varfixing, | ||
SCIP_VAR * | implvar, | ||
SCIP_Bool * | haslowerimplic, | ||
SCIP_Bool * | hasupperimplic ) |
returns which implications on given variable y are contained in implications for x == 0 or x == 1
implics | implications data structure |
varfixing | FALSE if y should be searched in implications for x == 0, TRUE for x == 1 |
implvar | variable y to search for |
haslowerimplic | pointer to store whether there exists an implication y >= l |
hasupperimplic | pointer to store whether there exists an implication y <= u |
Definition at line 894 of file implics.c.
References assert(), implicsSearchVar(), NULL, and SCIP_Bool.
void SCIPimplicsGetVarImplicPoss | ( | SCIP_IMPLICS * | implics, |
SCIP_Bool | varfixing, | ||
SCIP_VAR * | implvar, | ||
int * | lowerimplicpos, | ||
int * | upperimplicpos ) |
returns which implications on given variable y are contained in implications for x == 0 or x == 1
implics | implications data structure |
varfixing | FALSE if y should be searched in implications for x == 0, TRUE for x == 1 |
implvar | variable y to search for |
lowerimplicpos | pointer to store the position of an implication y >= l |
upperimplicpos | pointer to store the position of an implication y <= u |
Definition at line 916 of file implics.c.
References assert(), implicsSearchVar(), NULL, and SCIP_Bool.
Referenced by SCIPvarGetImplicVarBounds().
SCIP_Bool SCIPimplicsContainsImpl | ( | SCIP_IMPLICS * | implics, |
SCIP_Bool | varfixing, | ||
SCIP_VAR * | implvar, | ||
SCIP_BOUNDTYPE | impltype ) |
returns whether an implication y <= b or y >= b is contained in implications for x == 0 or x == 1
implics | implications data structure |
varfixing | FALSE if y should be searched in implications for x == 0, TRUE for x == 1 |
implvar | variable y to search for |
impltype | type of implication y <=/>= b to search for |
Definition at line 933 of file implics.c.
References implicsSearchImplic(), and SCIP_Bool.
Referenced by SCIPvarHasImplic().
|
static |
cliquetable | clique table data structure |
first | first index |
second | second index |
Definition at line 956 of file implics.c.
References assert(), SCIP_CliqueTable::cliques, and SCIP_Clique::index.
Referenced by cliquetableMarkCliqueForCleanup(), and SCIPcliquetableCleanup().
|
static |
cliquetable | clique table data structure |
clique | clique data structure |
Definition at line 982 of file implics.c.
References assert(), SCIP_CliqueTable::cliques, cliquetableSwapCliques(), SCIP_CliqueTable::ncliques, SCIP_CliqueTable::ndirtycliques, and SCIPcliqueIsCleanedUp().
Referenced by SCIPcliqueDelVar().
|
static |
creates a clique data structure with already created variables and values arrays in the size of 'size'
clique | pointer to store clique data structure |
blkmem | block memory |
size | initial size of clique |
vars | binary variables in the clique: at most one can be set to the given value |
values | values of the variables in the clique |
nvars | number of variables in the clique |
id | unique identifier of the clique |
isequation | is the clique an equation or an inequality? |
Definition at line 1004 of file implics.c.
References assert(), BMSallocBlockMemory, BMSduplicateBlockMemoryArray, FALSE, NULL, nvars, SCIP_ALLOC, SCIP_Bool, SCIP_OKAY, and vars.
Referenced by SCIPcliquetableAdd().
|
static |
frees a clique data structure
clique | pointer to store clique data structure |
blkmem | block memory |
Definition at line 1038 of file implics.c.
References assert(), BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.
Referenced by SCIPcliquetableAdd(), SCIPcliquetableCleanup(), and SCIPcliquetableFree().
|
static |
ensures, that clique arrays can store at least num entries
clique | clique data structure |
blkmem | block memory |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 1055 of file implics.c.
References assert(), BMSreallocBlockMemoryArray, NULL, SCIP_ALLOC, SCIP_OKAY, and SCIPsetCalcMemGrowSize().
Referenced by SCIPcliqueAddVar().
int SCIPcliqueSearchVar | ( | SCIP_CLIQUE * | clique, |
SCIP_VAR * | var, | ||
SCIP_Bool | value ) |
returns the position of the given variable/value pair in the clique; returns -1 if variable/value pair is not member of the clique
clique | clique data structure |
var | variable to search for |
value | value of the variable in the clique |
Definition at line 1081 of file implics.c.
References assert(), i, NULL, SCIP_Bool, SCIPvarGetIndex(), var, and varidx.
Referenced by SCIPcliqueDelVar(), SCIPcliqueHasVar(), and SCIPcliquelistCheck().
SCIP_Bool SCIPcliqueHasVar | ( | SCIP_CLIQUE * | clique, |
SCIP_VAR * | var, | ||
SCIP_Bool | value ) |
returns whether the given variable/value pair is member of the given clique
clique | clique data structure |
var | variable to remove from the clique |
value | value of the variable in the clique |
Definition at line 1141 of file implics.c.
References SCIP_Bool, SCIPcliqueSearchVar(), and var.
Referenced by addRltTerm(), and getBinaryProductExpr().
SCIP_RETCODE SCIPcliqueAddVar | ( | SCIP_CLIQUE * | clique, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_VAR * | var, | ||
SCIP_Bool | value, | ||
SCIP_Bool * | doubleentry, | ||
SCIP_Bool * | oppositeentry ) |
adds a single variable to the given clique
clique | clique data structure |
blkmem | block memory |
set | global SCIP settings |
var | variable to add to the clique |
value | value of the variable in the clique |
doubleentry | pointer to store whether the variable and value occurs twice in the clique |
oppositeentry | pointer to store whether the variable with opposite value is in the clique |
Definition at line 1151 of file implics.c.
References assert(), BMSmoveMemoryArray, cliqueEnsureSize(), FALSE, i, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetDebugMsg, SCIPsortedvecFindPtr(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarIsBinary(), TRUE, and var.
Referenced by SCIPvarAddClique().
void SCIPcliqueDelVar | ( | SCIP_CLIQUE * | clique, |
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_VAR * | var, | ||
SCIP_Bool | value ) |
removes a single variable from the given clique
clique | clique data structure |
cliquetable | clique table data structure |
var | variable to remove from the clique |
value | value of the variable in the clique |
Definition at line 1285 of file implics.c.
References assert(), cliquetableMarkCliqueForCleanup(), SCIP_CliqueTable::incleanup, NULL, nvars, SCIP_Bool, SCIPcliqueSearchVar(), SCIPdebugMessage, SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), and var.
Referenced by SCIPcliquelistRemoveFromCliques(), and SCIPvarDelClique().
|
static |
gets the position of the given clique in the cliques array; returns -1 if clique is not member of cliques array
cliques | array of cliques |
ncliques | number of cliques in the cliques array |
clique | clique to search for |
Definition at line 1333 of file implics.c.
References assert(), SCIP_Clique::id, and NULL.
Referenced by SCIPcliquelistDel().
|
static |
creates a clique list data structure
cliquelist | pointer to store clique list data structure |
blkmem | block memory |
Definition at line 1422 of file implics.c.
References assert(), BMSallocBlockMemory, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPcliquelistAdd().
void SCIPcliquelistFree | ( | SCIP_CLIQUELIST ** | cliquelist, |
BMS_BLKMEM * | blkmem ) |
frees a clique list data structure
cliquelist | pointer to the clique list data structure |
blkmem | block memory |
Definition at line 1441 of file implics.c.
References assert(), BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.
Referenced by SCIPcliquelistDel(), and varFree().
|
static |
ensures, that clique list arrays can store at least num entries
cliquelist | clique list data structure |
blkmem | block memory |
set | global SCIP settings |
value | value of the variable for which the clique list should be extended |
num | minimum number of entries to store |
Definition at line 1458 of file implics.c.
References assert(), BMSreallocBlockMemoryArray, SCIP_CliqueList::cliques, NULL, SCIP_ALLOC, SCIP_Bool, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIP_CliqueList::size.
Referenced by SCIPcliquelistAdd().
SCIP_RETCODE SCIPcliquelistAdd | ( | SCIP_CLIQUELIST ** | cliquelist, |
BMS_BLKMEM * | blkmem, | ||
SCIP_SET * | set, | ||
SCIP_Bool | value, | ||
SCIP_CLIQUE * | clique ) |
adds a clique to the clique list
cliquelist | pointer to the clique list data structure |
blkmem | block memory |
set | global SCIP settings |
value | value of the variable for which the clique list should be extended |
clique | clique that should be added to the clique list |
Definition at line 1482 of file implics.c.
References assert(), BMSmoveMemoryArray, cliquelistCreate(), cliquelistEnsureSize(), i, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, and SCIPsetDebugMsg.
Referenced by SCIPvarAddClique(), SCIPvarAddCliqueToList(), and SCIPvarsAddClique().
SCIP_RETCODE SCIPcliquelistDel | ( | SCIP_CLIQUELIST ** | cliquelist, |
BMS_BLKMEM * | blkmem, | ||
SCIP_Bool | value, | ||
SCIP_CLIQUE * | clique ) |
removes a clique from the clique list
cliquelist | pointer to the clique list data structure |
blkmem | block memory |
value | value of the variable for which the clique list should be reduced |
clique | clique that should be deleted from the clique list |
Definition at line 1527 of file implics.c.
References assert(), BMSduplicateBlockMemoryArray, BMSfreeBlockMemoryArray, BMSmoveMemoryArray, cliquesSearchClique(), NULL, SCIP_ALLOC, SCIP_Bool, SCIP_OKAY, SCIPcliqueGetNVars(), SCIPcliqueGetValues(), SCIPcliqueGetVars(), SCIPcliquelistFree(), SCIPdebugMessage, and SCIPsortPtrBool().
Referenced by SCIPvarDelClique(), and SCIPvarDelCliqueFromList().
SCIP_Bool SCIPcliquelistsHaveCommonClique | ( | SCIP_CLIQUELIST * | cliquelist1, |
SCIP_Bool | value1, | ||
SCIP_CLIQUELIST * | cliquelist2, | ||
SCIP_Bool | value2 ) |
returns whether the given clique lists have a non-empty intersection, i.e. whether there is a clique that appears in both lists
cliquelist1 | first clique list data structure |
value1 | value of first variable |
cliquelist2 | second clique list data structure |
value2 | value of second variable |
Definition at line 1605 of file implics.c.
References assert(), SCIP_CliqueList::cliques, FALSE, SCIP_CliqueList::ncliques, NULL, SCIP_Bool, SCIPcliqueGetId(), and TRUE.
Referenced by SCIPvarsHaveCommonClique().
void SCIPcliquelistRemoveFromCliques | ( | SCIP_CLIQUELIST * | cliquelist, |
SCIP_CLIQUETABLE * | cliquetable, | ||
SCIP_VAR * | var, | ||
SCIP_Bool | irrelevantvar ) |
removes all listed entries from the cliques
cliquelist | clique list data structure |
cliquetable | clique table data structure |
var | active problem variable the clique list belongs to |
irrelevantvar | has the variable become irrelevant, meaning that equality cliques need to be relaxed? |
Definition at line 1683 of file implics.c.
References assert(), cliqueCheck, SCIP_CliqueList::cliques, FALSE, i, SCIP_CliqueTable::incleanup, SCIP_CliqueList::ncliques, NULL, SCIP_Bool, SCIPcliqueDelVar(), SCIPdebugMessage, SCIPvarGetCliques(), SCIPvarGetName(), SCIPvarGetNCliques(), SCIPvarIsBinary(), and var.
Referenced by SCIPvarRemoveCliquesImplicsVbs().
|
static |
|
static |
returns TRUE iff both keys are equal
Definition at line 1746 of file implics.c.
References assert(), FALSE, i, NULL, SCIP_Clique::nvars, TRUE, SCIP_Clique::values, and SCIP_Clique::vars.
|
static |
returns the hash value of the key
Definition at line 1772 of file implics.c.
References SCIPhashFour, and SCIPvarGetIndex().
SCIP_RETCODE SCIPcliquetableCreate | ( | SCIP_CLIQUETABLE ** | cliquetable, |
SCIP_SET * | set, | ||
BMS_BLKMEM * | blkmem ) |
creates a clique table data structure
cliquetable | pointer to store clique table data structure |
set | global SCIP settings |
blkmem | block memory |
Definition at line 1786 of file implics.c.
References assert(), BMSallocMemory, FALSE, HASHTABLE_CLIQUETABLE_SIZE, MAX, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_HASHSIZE_CLIQUES, SCIP_HASHSIZE_CLIQUES_SMALL, SCIP_OKAY, and SCIPhashtableCreate().
Referenced by SCIPtransformProb().
SCIP_RETCODE SCIPcliquetableFree | ( | SCIP_CLIQUETABLE ** | cliquetable, |
BMS_BLKMEM * | blkmem ) |
frees a clique table data structure
cliquetable | pointer to store clique table data structure |
blkmem | block memory |
Definition at line 1822 of file implics.c.
References assert(), BMSfreeMemory, BMSfreeMemoryArrayNull, cliqueFree(), i, NULL, SCIP_OKAY, SCIPdisjointsetFree(), SCIPhashmapFree(), and SCIPhashtableFree().
Referenced by freeTransform(), and freeTransforming().
|
static |
ensures, that clique table arrays can store at least num entries
cliquetable | clique table data structure |
set | global SCIP settings |
num | minimum number of entries to store |
Definition at line 1859 of file implics.c.
References assert(), BMSreallocMemoryArray, SCIP_CliqueTable::cliques, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIP_CliqueTable::size.
Referenced by SCIPcliquetableAdd().
|
static |
sort variables regarding their index and remove multiple entries of the same variable
clqvars | variables of a clique |
clqvalues | clique values, active or negated, for the variables in a clique |
nclqvars | number of clique variables |
isequation | do we have an equation clique at hand? |
clique | clique data structure or NULL |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree if in solving stage |
reopt | reoptimization data structure |
lp | current LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
nbdchgs | pointer to store number of fixed variables |
infeasible | pointer to store whether an infeasibility was detected |
Definition at line 1882 of file implics.c.
References assert(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetDebugMsg, SCIPsortPtrBool(), SCIPvarDelCliqueFromList(), SCIPvarFixBinary(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), TRUE, var, and w.
Referenced by cliqueCleanup(), and SCIPcliquetableAdd().
|
static |
helper function that returns the graph node index for a variable during connected component detection
cliquetable | clique table data structure |
binvar | binary (or binary integer or implicit binary) variable |
Definition at line 2261 of file implics.c.
References assert(), SCIP_CliqueTable::compsfromscratch, NULL, SCIPhashmapExists(), SCIPhashmapGetImageInt(), SCIPvarGetProbvar(), SCIPvarIsActive(), SCIPvarIsBinary(), TRUE, and SCIP_CliqueTable::varidxtable.
Referenced by cliquetableUpdateConnectednessClique(), and SCIPcliquetableGetVarComponentIdx().
|
static |
updates connectedness information for the clique
cliquetable | clique table data structure |
clique | clique that should be added |
Definition at line 2304 of file implics.c.
References assert(), cliquetableGetNodeIndexBinvar(), SCIP_CliqueTable::compsfromscratch, SCIP_CliqueTable::djset, FALSE, i, NULL, SCIPdisjointsetUnion(), and TRUE.
Referenced by SCIPcliquetableAdd(), and SCIPcliquetableComputeCliqueComponents().
int SCIPcliquetableGetVarComponentIdx | ( | SCIP_CLIQUETABLE * | cliquetable, |
SCIP_VAR * | var ) |
returns the index of the connected component of the clique graph that the variable belongs to, or -1
cliquetable | clique table data structure |
var | problem variable |
Definition at line 2348 of file implics.c.
References assert(), cliquetableGetNodeIndexBinvar(), SCIP_CliqueTable::djset, NULL, SCIPdisjointsetFind(), SCIPdisjointsetGetSize(), SCIPvarIsBinary(), and var.
Referenced by SCIPcalcCliquePartition().
SCIP_RETCODE SCIPcliquetableAdd | ( | SCIP_CLIQUETABLE * | cliquetable, |
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_VAR ** | vars, | ||
SCIP_Bool * | values, | ||
int | nvars, | ||
SCIP_Bool | isequation, | ||
SCIP_Bool * | infeasible, | ||
int * | nbdchgs ) |
adds a clique to the clique table, using the given values for the given variables; performs implications if the clique contains the same variable twice
cliquetable | clique table data structure |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree if in solving stage |
reopt | reoptimization data structure |
lp | current LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
vars | binary variables in the clique: at most one can be set to the given value |
values | values of the variables in the clique; NULL to use TRUE for all vars |
nvars | number of variables in the clique |
isequation | is the clique an equation or an inequality? |
infeasible | pointer to store whether an infeasibility was detected |
nbdchgs | pointer to count the number of performed bound changes, or NULL |
Definition at line 2376 of file implics.c.
References assert(), cliqueCheck, cliqueCreateWithData(), cliqueFree(), SCIP_CliqueTable::cliques, cliquetableEnsureSize(), cliquetableUpdateConnectednessClique(), FALSE, SCIP_CliqueTable::hashtable, SCIP_Clique::id, SCIP_Clique::index, SCIP_CliqueTable::ncliques, SCIP_CliqueTable::ncreatedcliques, SCIP_CliqueTable::nentries, SCIP_Stat::nnz, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPcliquetableGetNEntries(), SCIPdebugCheckClique, SCIPhashtableInsert(), SCIPhashtableRetrieve(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetDuplicateBufferArray, SCIPsetFreeBufferArray, SCIPsetIsInfinity(), SCIPvarFixBinary(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPvarIsMarkedDeleteGlobalStructures(), SCIPvarsAddClique(), SCIPvarsGetProbvarBinary(), sortAndMergeClique(), TRUE, var, vars, and w.
Referenced by SCIPaddClique(), and varAddImplic().
|
static |
clean up given clique by removing fixed variables
clique | clique data structure |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree if in solving stage |
reopt | reoptimization data structure |
lp | current LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
cliquetable | clique table data structure |
nchgbds | pointer to store number of fixed variables |
infeasible | pointer to store whether an infeasibility was detected |
Definition at line 2646 of file implics.c.
References assert(), FALSE, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_AGGREGATED, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIP_VARSTATUS_NEGATED, SCIPcliqueIsCleanedUp(), SCIPsetDebugMsg, SCIPvarAddCliqueToList(), SCIPvarDelCliqueFromList(), SCIPvarFixBinary(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetNegationVar(), SCIPvarGetProbvarBinary(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarIsMarkedDeleteGlobalStructures(), sortAndMergeClique(), TRUE, and w.
Referenced by SCIPcliquetableCleanup().
SCIP_RETCODE SCIPcliquetableCleanup | ( | SCIP_CLIQUETABLE * | cliquetable, |
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, | ||
int * | nchgbds, | ||
SCIP_Bool * | infeasible ) |
removes all empty and single variable cliques from the clique table; removes double entries from the clique table
cliquetable | clique table data structure |
blkmem | block memory |
set | global SCIP settings |
stat | problem statistics |
transprob | transformed problem |
origprob | original problem |
tree | branch and bound tree if in solving stage |
reopt | reoptimization data structure |
lp | current LP data |
branchcand | branching candidate storage |
eventqueue | event queue |
nchgbds | pointer to store number of fixed variables |
infeasible | pointer to store whether an infeasibility was detected |
Definition at line 2920 of file implics.c.
References assert(), checkNEntries, cliqueCheck, cliqueCleanup(), cliqueFree(), SCIP_CliqueTable::cliques, cliquetableSwapCliques(), SCIP_Clique::equation, FALSE, SCIP_CliqueTable::hashtable, SCIP_CliqueTable::incleanup, SCIP_Clique::index, SCIP_CliqueTable::ncleanupaggrvars, SCIP_CliqueTable::ncleanupfixedvars, SCIP_CliqueTable::ncliques, SCIP_CliqueTable::ndirtycliques, SCIP_CliqueTable::nentries, SCIP_Stat::npresolaggrvars, SCIP_Stat::npresolfixedvars, NULL, SCIP_Clique::nvars, SCIP_Bool, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PRESOLVING, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPcliqueIsCleanedUp(), SCIPeventCreateImplAdded(), SCIPeventqueueAdd(), SCIPeventqueueDelay(), SCIPeventqueueProcess(), SCIPhashtableInsert(), SCIPhashtableRemove(), SCIPhashtableRetrieve(), SCIPsetDebugMsg, SCIPsetGetStage(), SCIPvarDelCliqueFromList(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarTryAggregateVars(), and TRUE.
Referenced by exitPresolve(), presolveRound(), and SCIPcleanupCliques().
SCIP_RETCODE SCIPcliquetableComputeCliqueComponents | ( | SCIP_CLIQUETABLE * | cliquetable, |
SCIP_SET * | set, | ||
BMS_BLKMEM * | blkmem, | ||
SCIP_VAR ** | vars, | ||
int | nbinvars, | ||
int | nintvars, | ||
int | nimplvars ) |
computes connected components of the clique table
an update becomes necessary if a clique gets added with variables from different components
cliquetable | clique table data structure |
set | global SCIP settings |
blkmem | block memory |
vars | array of problem variables, sorted by variable type |
nbinvars | number of binary variables |
nintvars | number of integer variables |
nimplvars | number of implicit integer variables |
Definition at line 3131 of file implics.c.
References assert(), c, SCIP_CliqueTable::cliques, cliquetableUpdateConnectednessClique(), SCIP_CliqueTable::compsfromscratch, SCIP_CliqueTable::djset, FALSE, nbinvars, SCIP_CliqueTable::ncliquecomponents, SCIP_CliqueTable::ncliques, nintvars, NULL, SCIP_CALL, SCIP_OKAY, SCIPdisjointsetCreate(), SCIPdisjointsetFree(), SCIPdisjointsetGetComponentCount(), SCIPhashmapCreate(), SCIPhashmapInsertInt(), SCIPhashmapRemoveAll(), SCIPsetDebugMsg, SCIPvarGetProbvar(), SCIPvarIsActive(), SCIPvarIsBinary(), var, SCIP_CliqueTable::varidxtable, and vars.
Referenced by SCIPcalcCliquePartition().
int SCIPvboundsGetNVbds | ( | SCIP_VBOUNDS * | vbounds | ) |
gets number of variable bounds contained in given variable bounds data structure
vbounds | variable bounds data structure |
Definition at line 3290 of file implics.c.
References SCIP_VBounds::len, and NULL.
Referenced by SCIPvarAggregate(), SCIPvarGetNVlbs(), SCIPvarGetNVubs(), SCIPvarRemoveCliquesImplicsVbs(), and varAddTransitiveImplic().
SCIP_VAR ** SCIPvboundsGetVars | ( | SCIP_VBOUNDS * | vbounds | ) |
gets array of variables contained in given variable bounds data structure
vbounds | variable bounds data structure |
Definition at line 3298 of file implics.c.
References NULL, and SCIP_VBounds::vars.
Referenced by SCIPvarAggregate(), SCIPvarGetVlbVars(), SCIPvarGetVubVars(), SCIPvarRemoveCliquesImplicsVbs(), and varAddTransitiveImplic().
SCIP_Real * SCIPvboundsGetCoefs | ( | SCIP_VBOUNDS * | vbounds | ) |
gets array of coefficients contained in given variable bounds data structure
vbounds | variable bounds data structure |
Definition at line 3306 of file implics.c.
References SCIP_VBounds::coefs, NULL, and SCIP_Real.
Referenced by SCIPvarAggregate(), SCIPvarGetVlbCoefs(), SCIPvarGetVubCoefs(), SCIPvarRemoveCliquesImplicsVbs(), and varAddTransitiveImplic().
SCIP_Real * SCIPvboundsGetConstants | ( | SCIP_VBOUNDS * | vbounds | ) |
gets array of constants contained in given variable bounds data structure
vbounds | variable bounds data structure |
Definition at line 3314 of file implics.c.
References SCIP_VBounds::constants, NULL, and SCIP_Real.
Referenced by SCIPvarAggregate(), SCIPvarGetVlbConstants(), SCIPvarGetVubConstants(), SCIPvarRemoveCliquesImplicsVbs(), and varAddTransitiveImplic().
int SCIPimplicsGetNImpls | ( | SCIP_IMPLICS * | implics, |
SCIP_Bool | varfixing ) |
gets number of implications for a given binary variable fixing
implics | implication data |
varfixing | should the implications on var == FALSE or var == TRUE be returned? |
Definition at line 3322 of file implics.c.
References SCIP_Implics::nimpls, NULL, and SCIP_Bool.
Referenced by SCIPvarAggregate(), SCIPvarGetImplRedcost(), SCIPvarGetNImpls(), SCIPvarRemoveCliquesImplicsVbs(), and varAddTransitiveBinaryClosureImplic().
SCIP_VAR ** SCIPimplicsGetVars | ( | SCIP_IMPLICS * | implics, |
SCIP_Bool | varfixing ) |
gets array with implied variables for a given binary variable fixing
implics | implication data |
varfixing | should the implications on var == FALSE or var == TRUE be returned? |
Definition at line 3331 of file implics.c.
References NULL, SCIP_Bool, and SCIP_Implics::vars.
Referenced by SCIPvarAggregate(), SCIPvarGetImplRedcost(), SCIPvarGetImplVars(), SCIPvarRemoveCliquesImplicsVbs(), and varAddTransitiveBinaryClosureImplic().
SCIP_BOUNDTYPE * SCIPimplicsGetTypes | ( | SCIP_IMPLICS * | implics, |
SCIP_Bool | varfixing ) |
gets array with implication types for a given binary variable fixing
implics | implication data |
varfixing | should the implications on var == FALSE or var == TRUE be returned? |
Definition at line 3340 of file implics.c.
References NULL, SCIP_Bool, and SCIP_Implics::types.
Referenced by SCIPvarAggregate(), SCIPvarGetImplRedcost(), SCIPvarGetImplTypes(), SCIPvarRemoveCliquesImplicsVbs(), and varAddTransitiveBinaryClosureImplic().
SCIP_Real * SCIPimplicsGetBounds | ( | SCIP_IMPLICS * | implics, |
SCIP_Bool | varfixing ) |
gets array with implication bounds for a given binary variable fixing
implics | implication data |
varfixing | should the implications on var == FALSE or var == TRUE be returned? |
Definition at line 3349 of file implics.c.
References SCIP_Implics::bounds, NULL, SCIP_Bool, and SCIP_Real.
Referenced by SCIPvarAggregate(), SCIPvarGetImplBounds(), SCIPvarGetImplRedcost(), SCIPvarRemoveCliquesImplicsVbs(), and varAddTransitiveBinaryClosureImplic().
int * SCIPimplicsGetIds | ( | SCIP_IMPLICS * | implics, |
SCIP_Bool | varfixing ) |
Gets array with unique implication identifiers for a given binary variable fixing. If an implication is a shortcut, i.e., it was added as part of the transitive closure of another implication, its id is negative, otherwise it is nonnegative.
implics | implication data |
varfixing | should the implications on var == FALSE or var == TRUE be returned? |
Definition at line 3361 of file implics.c.
References SCIP_Implics::ids, NULL, and SCIP_Bool.
Referenced by SCIPvarGetImplIds().
int SCIPcliqueGetNVars | ( | SCIP_CLIQUE * | clique | ) |
gets number of variables in the cliques
clique | clique data structure |
Definition at line 3370 of file implics.c.
References assert(), and NULL.
Referenced by addGLSCliques(), addNextLevelCliques(), applyCliqueFixings(), collectBinaryCliqueData(), collectMinactImplicVars(), createConflictGraphSST(), dfs(), dfs(), extractCycle(), getCliqueUnfixedVars(), getMaxactImplicObjchg(), insertSortedRootNeighbors(), isNeighbor(), propagateVbounds(), SCIPcliquelistDel(), SCIPcopyImplicationsCliques(), SCIPnodePropagateImplics(), SCIPvarAddClique(), SCIPvarGetImplRedcost(), SCIPwriteCliqueGraph(), separateCuts(), tarjan(), tcliquegraphConstructCliqueTable(), and tightenWeightsLift().
SCIP_VAR ** SCIPcliqueGetVars | ( | SCIP_CLIQUE * | clique | ) |
gets array of active problem variables in the cliques
clique | clique data structure |
Definition at line 3380 of file implics.c.
References assert(), and NULL.
Referenced by addGLSCliques(), addNextLevelCliques(), applyCliqueFixings(), collectBinaryCliqueData(), collectMinactImplicVars(), createConflictGraphSST(), dfs(), dfs(), extractCycle(), getCliqueUnfixedVars(), getMaxactImplicObjchg(), insertSortedRootNeighbors(), isNeighbor(), propagateVbounds(), SCIPcliquelistDel(), SCIPcopyImplicationsCliques(), SCIPnodePropagateImplics(), SCIPvarAddClique(), SCIPvarGetImplRedcost(), SCIPwriteCliqueGraph(), separateCuts(), tarjan(), tcliquegraphConstructCliqueTable(), and tightenWeightsLift().
SCIP_Bool * SCIPcliqueGetValues | ( | SCIP_CLIQUE * | clique | ) |
gets array of values of active problem variables in the cliques, i.e. whether the variable is fixed to FALSE or to TRUE in the clique
clique | clique data structure |
Definition at line 3392 of file implics.c.
References assert(), NULL, and SCIP_Bool.
Referenced by addGLSCliques(), addNextLevelCliques(), applyCliqueFixings(), collectBinaryCliqueData(), collectMinactImplicVars(), dfs(), dfs(), extractCycle(), getMaxactImplicObjchg(), insertSortedRootNeighbors(), isNeighbor(), propagateVbounds(), SCIPcliquelistDel(), SCIPcopyImplicationsCliques(), SCIPnodePropagateImplics(), SCIPvarAddClique(), SCIPvarGetImplRedcost(), SCIPwriteCliqueGraph(), separateCuts(), tarjan(), tcliquegraphConstructCliqueTable(), and tightenWeightsLift().
unsigned int SCIPcliqueGetId | ( | SCIP_CLIQUE * | clique | ) |
gets unique identifier of the clique
clique | clique data structure |
Definition at line 3402 of file implics.c.
References assert(), and NULL.
Referenced by createConflictGraphSST(), SCIP_DECL_HASHKEYVAL(), SCIPcliquelistsHaveCommonClique(), and tcliquegraphAddNode().
int SCIPcliqueGetIndex | ( | SCIP_CLIQUE * | clique | ) |
SCIP_Bool SCIPcliqueIsCleanedUp | ( | SCIP_CLIQUE * | clique | ) |
gets unique identifier of the clique
clique | clique data structure |
Definition at line 3426 of file implics.c.
References assert(), NULL, and SCIP_Bool.
Referenced by cliqueCleanup(), cliquetableMarkCliqueForCleanup(), SCIPcliquetableCleanup(), and SCIPvarGetImplRedcost().
SCIP_Bool SCIPcliqueIsEquation | ( | SCIP_CLIQUE * | clique | ) |
return whether the given clique is an equation
clique | clique data structure |
Definition at line 3436 of file implics.c.
References assert(), NULL, and SCIP_Bool.
Referenced by extractCycle(), SCIPcopyImplicationsCliques(), and separateCuts().
int SCIPcliquelistGetNCliques | ( | SCIP_CLIQUELIST * | cliquelist, |
SCIP_Bool | value ) |
returns the number of cliques stored in the clique list
cliquelist | clique list data structure |
value | value of the variable for which the cliques should be returned |
Definition at line 3446 of file implics.c.
References SCIP_CliqueList::ncliques, NULL, and SCIP_Bool.
Referenced by SCIPcliquelistCheck(), and SCIPvarGetNCliques().
SCIP_CLIQUE ** SCIPcliquelistGetCliques | ( | SCIP_CLIQUELIST * | cliquelist, |
SCIP_Bool | value ) |
returns the cliques stored in the clique list, or NULL if the clique list is empty
cliquelist | clique list data structure |
value | value of the variable for which the cliques should be returned |
Definition at line 3455 of file implics.c.
References SCIP_CliqueList::cliques, NULL, and SCIP_Bool.
Referenced by SCIPcliquelistCheck(), and SCIPvarGetCliques().
void SCIPcliquelistCheck | ( | SCIP_CLIQUELIST * | cliquelist, |
SCIP_VAR * | var ) |
checks whether variable is contained in all cliques of the cliquelist
cliquelist | clique list data structure |
var | variable, the clique list belongs to |
Definition at line 3464 of file implics.c.
References assert(), FALSE, i, NULL, nvars, SCIP_Bool, SCIPcliquelistGetCliques(), SCIPcliquelistGetNCliques(), SCIPcliqueSearchVar(), SCIPvarGetCliques(), SCIPvarGetNCliques(), TRUE, and var.
Referenced by SCIPvarAddClique(), SCIPvarDelClique(), and SCIPvarsAddClique().
int SCIPcliquetableGetNCliques | ( | SCIP_CLIQUETABLE * | cliquetable | ) |
gets the number of cliques stored in the clique table
cliquetable | clique table data structure |
Definition at line 3506 of file implics.c.
References assert(), SCIP_CliqueTable::ncliques, and NULL.
Referenced by presolve(), SCIPgetNCliques(), SCIPhaveVarsCommonClique(), and SCIPisPresolveFinished().
int SCIPcliquetableGetNCliquesCreated | ( | SCIP_CLIQUETABLE * | cliquetable | ) |
gets the number of cliques created so far by the clique table
cliquetable | clique table data structure |
Definition at line 3516 of file implics.c.
References assert(), SCIP_CliqueTable::ncreatedcliques, and NULL.
Referenced by SCIPgetNCliquesCreated().
SCIP_CLIQUE ** SCIPcliquetableGetCliques | ( | SCIP_CLIQUETABLE * | cliquetable | ) |
gets the array of cliques stored in the clique table
cliquetable | clique table data structure |
Definition at line 3526 of file implics.c.
References assert(), SCIP_CliqueTable::cliques, and NULL.
Referenced by SCIPgetCliques().
SCIP_Longint SCIPcliquetableGetNEntries | ( | SCIP_CLIQUETABLE * | cliquetable | ) |
gets the number of entries in the whole clique table
cliquetable | clique table data structure |
Definition at line 3536 of file implics.c.
References assert(), SCIP_CliqueTable::nentries, NULL, and SCIP_Longint.
Referenced by SCIPcliquetableAdd(), and SCIPprintTransProblemStatistics().
int SCIPcliquetableGetNCliqueComponents | ( | SCIP_CLIQUETABLE * | cliquetable | ) |
returns the number of clique components, or -1 if update is necessary first
cliquetable | clique table data structure |
Definition at line 3546 of file implics.c.
References SCIP_CliqueTable::compsfromscratch, and SCIP_CliqueTable::ncliquecomponents.
SCIP_Bool SCIPcliquetableNeedsComponentUpdate | ( | SCIP_CLIQUETABLE * | cliquetable | ) |
returns TRUE iff the connected clique components need an update (because new cliques were added)
cliquetable | clique table data structure |
Definition at line 3554 of file implics.c.
References SCIP_CliqueTable::compsfromscratch, SCIP_CliqueTable::djset, NULL, and SCIP_Bool.
Referenced by SCIPcalcCliquePartition().