methods for implications, variable bounds, and clique tables
Definition in file implics.c.
#include <stdlib.h>
#include <assert.h>
#include "scip/def.h"
#include "scip/set.h"
#include "scip/stat.h"
#include "scip/event.h"
#include "scip/var.h"
#include "scip/implics.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/debug.h"
#include "scip/struct_implics.h"
Go to the source code of this file.
Macros | |
#define | HASHTABLE_CLIQUETABLE_SIZE 100 |
#define | checkNEntries(cliquetable) TRUE |
#define HASHTABLE_CLIQUETABLE_SIZE 100 |
Definition at line 1765 of file implics.c.
Referenced by SCIPcliquetableCreate().
#define checkNEntries | ( | cliquetable | ) | TRUE |
Definition at line 2787 of file implics.c.
Referenced by cliqueCleanup(), and SCIPcliquetableCleanup().
|
static |
creates a variable bounds data structure
vbounds | pointer to store variable bounds data structure |
blkmem | block memory |
Definition at line 48 of file implics.c.
References 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 66 of file implics.c.
References 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 84 of file implics.c.
References 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 118 of file implics.c.
References SCIP_VBounds::coefs, FALSE, SCIP_VBounds::len, NULL, SCIP_Bool, SCIP_OKAY, SCIPsortedvecFindPtr(), TRUE, 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 199 of file implics.c.
References FALSE, MAX, MIN, NULL, SCIP_Bool, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIP_VARTYPE_CONTINUOUS, SCIPsetIsZero(), SCIPvarGetStatus(), SCIPvarGetType(), TRUE, 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 281 of file implics.c.
References 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 326 of file implics.c.
References NULL, and SCIPvboundsFree().
Referenced by SCIPvarRemoveCliquesImplicsVbs().
|
static |
comparator function for implication variables in the implication data structure
Definition at line 352 of file implics.c.
References NULL, and SCIPvarGetIndex().
|
static |
performs integrity check on implications data structure
implics | implications data structure |
Definition at line 376 of file implics.c.
References FALSE, SCIP_Implics::nimpls, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, TRUE, SCIP_Implics::types, and SCIP_Implics::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 418 of file implics.c.
References 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 444 of file implics.c.
References 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 467 of file implics.c.
References BMSreallocBlockMemoryArray, implicsCreate(), NULL, SCIP_ALLOC, 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 509 of file implics.c.
References SCIP_Implics::nimpls, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIPsortedvecFindPtr(), SCIP_Implics::types, and SCIP_Implics::vars.
Referenced by implicsSearchImplic(), 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 593 of file implics.c.
References implicsSearchVar(), NULL, 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 630 of file implics.c.
References BMSmoveMemoryArray, checkImplics(), FALSE, implicsEnsureSize(), implicsSearchImplic(), SCIP_Stat::nimplications, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, 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 833 of file implics.c.
References 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 891 of file implics.c.
References implicsSearchVar(), and NULL.
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 913 of file implics.c.
References implicsSearchImplic().
Referenced by SCIPvarHasImplic().
|
static |
cliquetable | clique table data structure |
first | first index |
second | second index |
Definition at line 936 of file implics.c.
References 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 962 of file implics.c.
References SCIP_CliqueTable::cliques, cliquetableSwapCliques(), SCIP_Clique::index, 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 984 of file implics.c.
References BMSallocBlockMemory, BMSduplicateBlockMemoryArray, FALSE, NULL, SCIP_ALLOC, and SCIP_OKAY.
Referenced by SCIPcliquetableAdd().
|
static |
frees a clique data structure
clique | pointer to store clique data structure |
blkmem | block memory |
Definition at line 1018 of file implics.c.
References 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 1035 of file implics.c.
References BMSreallocBlockMemoryArray, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), SCIP_Clique::size, SCIP_Clique::values, and SCIP_Clique::vars.
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 1061 of file implics.c.
References NULL, SCIP_Clique::nvars, SCIPvarGetIndex(), SCIP_Clique::values, and SCIP_Clique::vars.
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 1121 of file implics.c.
References SCIPcliqueSearchVar().
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 1131 of file implics.c.
References BMSmoveMemoryArray, cliqueEnsureSize(), SCIP_Clique::eventsissued, FALSE, SCIP_Clique::id, NULL, SCIP_Clique::nvars, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetDebugMsg, SCIPsortedvecFindPtr(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarIsBinary(), TRUE, SCIP_Clique::values, and SCIP_Clique::vars.
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 1265 of file implics.c.
References cliquetableMarkCliqueForCleanup(), SCIP_Clique::id, SCIP_CliqueTable::incleanup, SCIP_Clique::index, NULL, SCIPcliqueSearchVar(), SCIPdebugMessage, SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIP_Clique::startcleanup, SCIP_Clique::values, and SCIP_Clique::vars.
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 1313 of file implics.c.
References SCIP_Clique::id, and NULL.
Referenced by cliqueCheck(), and SCIPcliquelistDel().
|
static |
checks whether clique appears in all clique lists of the involved variables
clique | clique data structure |
Definition at line 1354 of file implics.c.
References cliquesSearchClique(), SCIP_Clique::index, NULL, SCIP_Clique::nvars, SCIPvarGetCliques(), SCIPvarGetIndex(), SCIPvarGetLbGlobal(), SCIPvarGetNCliques(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), SCIP_Clique::startcleanup, SCIP_Clique::values, and SCIP_Clique::vars.
Referenced by SCIPcliquelistRemoveFromCliques(), SCIPcliquetableAdd(), and SCIPcliquetableCleanup().
|
static |
creates a clique list data structure
cliquelist | pointer to store clique list data structure |
blkmem | block memory |
Definition at line 1402 of file implics.c.
References 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 1421 of file implics.c.
References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL.
Referenced by SCIPcliquelistDel(), SCIPvarRemoveCliquesImplicsVbs(), 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 1438 of file implics.c.
References BMSreallocBlockMemoryArray, SCIP_CliqueList::cliques, NULL, SCIP_ALLOC, 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 1462 of file implics.c.
References BMSmoveMemoryArray, cliquelistCreate(), cliquelistEnsureSize(), SCIP_Clique::id, SCIP_CliqueList::ncliques, NULL, 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 1507 of file implics.c.
References BMSduplicateBlockMemoryArray, BMSfreeBlockMemoryArray, BMSmoveMemoryArray, cliquesSearchClique(), SCIP_Clique::id, SCIP_CliqueList::ncliques, 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 1585 of file implics.c.
References SCIP_CliqueList::cliques, FALSE, SCIP_CliqueList::ncliques, NULL, 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 1663 of file implics.c.
References cliqueCheck(), SCIP_CliqueList::cliques, SCIP_Clique::equation, FALSE, SCIP_Clique::id, SCIP_CliqueTable::incleanup, SCIP_Clique::index, SCIP_CliqueList::ncliques, NULL, SCIP_Clique::nvars, SCIP_Bool, SCIPcliqueDelVar(), SCIPdebugMessage, SCIPvarGetCliques(), SCIPvarGetName(), SCIPvarGetNCliques(), and SCIPvarIsBinary().
Referenced by SCIPvarRemoveCliquesImplicsVbs().
|
static |
|
static |
returns TRUE iff both keys are equal
Definition at line 1726 of file implics.c.
References FALSE, NULL, SCIP_Clique::nvars, TRUE, SCIP_Clique::values, and SCIP_Clique::vars.
|
static |
returns the hash value of the key
Definition at line 1752 of file implics.c.
References SCIP_Clique::nvars, SCIPcombineThreeInt, SCIPcombineTwoInt, SCIPhashTwo, SCIPvarGetIndex(), SCIP_Clique::values, and SCIP_Clique::vars.
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 1768 of file implics.c.
References 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 1802 of file implics.c.
References BMSfreeMemory, BMSfreeMemoryArrayNull, cliqueFree(), NULL, SCIP_OKAY, and SCIPhashtableFree().
Referenced by freeTransform().
|
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 1831 of file implics.c.
References 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 1854 of file implics.c.
References FALSE, SCIP_Clique::id, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPsetDebugMsg, SCIPsortPtrBool(), SCIPvarDelCliqueFromList(), SCIPvarFixBinary(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), and TRUE.
Referenced by cliqueCleanup(), and SCIPcliquetableAdd().
|
static |
checks if current connected components information will get outdated after adding this new clique
cliquetable | clique table data structure |
clique | clique that should be added |
Definition at line 2233 of file implics.c.
References SCIP_CliqueTable::componentupdate, NULL, SCIP_Clique::nvars, SCIPvarGetCliqueComponentIdx(), TRUE, and SCIP_Clique::vars.
Referenced by SCIPcliquetableAdd().
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 2264 of file implics.c.
References cliqueCheck(), cliqueCreateWithData(), cliqueFree(), SCIP_CliqueTable::cliques, cliquetableCheckComponentUpdate(), cliquetableEnsureSize(), SCIP_Clique::equation, FALSE, SCIP_CliqueTable::hashtable, SCIP_Clique::id, SCIP_Clique::index, SCIP_CliqueTable::ncliques, SCIP_CliqueTable::ncreatedcliques, SCIP_CliqueTable::nentries, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPdebugCheckClique, SCIPhashtableInsert(), SCIPhashtableRetrieve(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetDuplicateBufferArray, SCIPsetFreeBufferArray, SCIPvarFixBinary(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPvarIsMarkedDeleteGlobalStructures(), SCIPvarsAddClique(), SCIPvarsGetProbvarBinary(), sortAndMergeClique(), and TRUE.
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 2527 of file implics.c.
References checkNEntries, SCIP_CliqueTable::cliques, SCIP_Clique::equation, FALSE, SCIP_Clique::id, SCIP_CliqueTable::ncliques, SCIP_CliqueTable::nentries, NULL, SCIP_Clique::nvars, SCIP_Bool, SCIP_CALL, SCIP_Longint, 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(), SCIP_Clique::startcleanup, TRUE, SCIP_Clique::values, and SCIP_Clique::vars.
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 2796 of file implics.c.
References 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_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().
|
static |
helper function that returns the graph node index for a variable during connected component detection
binvar | binary (or binary integer or implicit binary) variable |
Definition at line 3005 of file implics.c.
References NULL, SCIPvarGetProbindex(), SCIPvarGetProbvar(), SCIPvarIsActive(), and SCIPvarIsBinary().
Referenced by SCIPcliquetableComputeCliqueComponents().
SCIP_RETCODE SCIPcliquetableComputeCliqueComponents | ( | SCIP_CLIQUETABLE * | cliquetable, |
SCIP_SET * | set, | ||
SCIP_VAR ** | vars, | ||
int | nbinvars, | ||
int | nintvars, | ||
int | nimplvars | ||
) |
computes connected components of the clique graph
use depth-first search similarly to the components presolver/constraint handler, representing a clique as a path to reduce memory usage, but leaving the connected components the same
an update becomes necessary if a clique gets added with variables from different components
cliquetable | clique table data structure |
set | global SCIP settings |
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 3043 of file implics.c.
References SCIP_CliqueTable::cliques, SCIP_CliqueTable::componentupdate, FALSE, getNodeIndexBinvar(), SCIP_CliqueTable::ncliquecomponents, SCIP_CliqueTable::ncliques, NULL, SCIP_CALL, SCIP_OKAY, SCIPcliqueGetNVars(), SCIPcliqueGetVars(), SCIPdigraphAddArc(), SCIPdigraphComputeUndirectedComponents(), SCIPdigraphCreate(), SCIPdigraphFree(), SCIPdigraphSetSizes(), SCIPsetAllocBufferArray, SCIPsetDebugMsg, SCIPsetFreeBufferArray, SCIPvarGetNCliques(), SCIPvarGetProbindex(), SCIPvarIsActive(), SCIPvarIsBinary(), SCIPvarSetCliqueComponentIdx(), and TRUE.
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 3215 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 3223 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 3231 of file implics.c.
References SCIP_VBounds::coefs, and NULL.
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 3239 of file implics.c.
References SCIP_VBounds::constants, and NULL.
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 3247 of file implics.c.
References SCIP_Implics::nimpls, and NULL.
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 3256 of file implics.c.
References NULL, 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 3265 of file implics.c.
References NULL, 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 3274 of file implics.c.
References SCIP_Implics::bounds, and NULL.
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 3286 of file implics.c.
References SCIP_Implics::ids, and NULL.
Referenced by SCIPvarGetImplIds().
int SCIPcliqueGetNVars | ( | SCIP_CLIQUE * | clique | ) |
gets number of variables in the cliques
clique | clique data structure |
Definition at line 3295 of file implics.c.
References NULL, and SCIP_Clique::nvars.
Referenced by addGLSCliques(), addNextLevelCliques(), collectBinaryCliqueData(), collectMinactImplicVars(), dfs(), extractCycle(), getMaxactImplicObjchg(), insertSortedRootNeighbors(), isNeighbor(), propagateVbounds(), SCIPcliquelistDel(), SCIPcliquetableComputeCliqueComponents(), SCIPcopyImplicationsCliques(), SCIPnodePropagateImplics(), SCIPvarAddClique(), SCIPvarGetImplRedcost(), SCIPwriteCliqueGraph(), separateCuts(), and tcliquegraphConstructCliqueTable().
SCIP_VAR** SCIPcliqueGetVars | ( | SCIP_CLIQUE * | clique | ) |
gets array of active problem variables in the cliques
clique | clique data structure |
Definition at line 3305 of file implics.c.
References NULL, and SCIP_Clique::vars.
Referenced by addGLSCliques(), addNextLevelCliques(), collectBinaryCliqueData(), collectMinactImplicVars(), dfs(), extractCycle(), getMaxactImplicObjchg(), insertSortedRootNeighbors(), isNeighbor(), propagateVbounds(), SCIPcliquelistDel(), SCIPcliquetableComputeCliqueComponents(), SCIPcopyImplicationsCliques(), SCIPnodePropagateImplics(), SCIPvarAddClique(), SCIPvarGetImplRedcost(), SCIPwriteCliqueGraph(), separateCuts(), and tcliquegraphConstructCliqueTable().
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 3317 of file implics.c.
References NULL, and SCIP_Clique::values.
Referenced by addGLSCliques(), addNextLevelCliques(), collectBinaryCliqueData(), collectMinactImplicVars(), dfs(), extractCycle(), getMaxactImplicObjchg(), insertSortedRootNeighbors(), isNeighbor(), propagateVbounds(), SCIPcliquelistDel(), SCIPcopyImplicationsCliques(), SCIPnodePropagateImplics(), SCIPvarAddClique(), SCIPvarGetImplRedcost(), SCIPwriteCliqueGraph(), separateCuts(), and tcliquegraphConstructCliqueTable().
int SCIPcliqueGetId | ( | SCIP_CLIQUE * | clique | ) |
gets unique identifier of the clique
clique | clique data structure |
Definition at line 3327 of file implics.c.
References SCIP_Clique::id, and NULL.
Referenced by SCIP_DECL_HASHKEYEQ(), SCIPcliquelistsHaveCommonClique(), and tcliquegraphAddNode().
SCIP_Bool SCIPcliqueIsCleanedUp | ( | SCIP_CLIQUE * | clique | ) |
gets unique identifier of the clique
clique | clique data structure |
Definition at line 3337 of file implics.c.
References NULL, and SCIP_Clique::startcleanup.
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 3347 of file implics.c.
References SCIP_Clique::equation, 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 3357 of file implics.c.
References SCIP_CliqueList::ncliques, and NULL.
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 3366 of file implics.c.
References SCIP_CliqueList::cliques, and NULL.
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 3375 of file implics.c.
References FALSE, NULL, SCIP_Bool, SCIPcliquelistGetCliques(), SCIPcliquelistGetNCliques(), SCIPcliqueSearchVar(), SCIPvarGetCliques(), SCIPvarGetNCliques(), TRUE, SCIP_Clique::values, and SCIP_Clique::vars.
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 3417 of file implics.c.
References SCIP_CliqueTable::ncliques, and NULL.
Referenced by presolve(), SCIPgetNCliques(), SCIPhaveVarsCommonClique(), and SCIPisPresolveFinished().
SCIP_CLIQUE** SCIPcliquetableGetCliques | ( | SCIP_CLIQUETABLE * | cliquetable | ) |
gets the array of cliques stored in the clique table
cliquetable | clique table data structure |
Definition at line 3427 of file implics.c.
References 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 3437 of file implics.c.
References SCIP_CliqueTable::nentries, and NULL.
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 3447 of file implics.c.
References SCIP_CliqueTable::componentupdate, 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 3455 of file implics.c.
References SCIP_CliqueTable::componentupdate, and SCIP_CliqueTable::ncliquecomponents.
Referenced by SCIPcalcCliquePartition().