All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
implics.c File Reference Detailed Descriptionmethods 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. Function Documentation
creates a variable bounds data structure
Definition at line 48 of file implics.c. References BMSallocBlockMemory, NULL, SCIP_ALLOC, and SCIP_OKAY. Referenced by vboundsEnsureSize().
frees a variable bounds data structure
Definition at line 66 of file implics.c. References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL. Referenced by SCIPvarAggregate(), SCIPvarRemove(), SCIPvboundsDel(), SCIPvboundsShrink(), and varFree().
ensures, that variable bounds arrays can store at least num entries
Definition at line 84 of file implics.c. References BMSreallocBlockMemoryArray, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and vboundsCreate(). Referenced by SCIPvboundsAdd().
binary searches the insertion position of the given variable in the vbounds data structure
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().
adds a variable bound to the variable bounds data structure
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().
removes from variable x a variable bound x >=/<= b*z + d with binary or integer z
Definition at line 281 of file implics.c. References NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPvboundsFree(), and vboundsSearchPos(). Referenced by varRemoveImplicsVbs().
reduces the number of variable bounds stored in the given variable bounds data structure
Definition at line 326 of file implics.c. References NULL, and SCIPvboundsFree(). Referenced by varRemoveImplicsVbs().
comparator function for implication variables in the implication data structure Definition at line 352 of file implics.c. References NULL, SCIP_VARTYPE_BINARY, SCIPABORT, SCIPvarGetIndex(), and SCIPvarGetType().
performs integrity check on implications data structure
Definition at line 400 of file implics.c. References SCIP_Implics::bounds, FALSE, SCIP_Implics::nbinimpls, SCIP_Implics::nimpls, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPsetIsFeasEQ(), SCIPsetIsFeasZero(), SCIPvarGetType(), TRUE, SCIP_Implics::types, and SCIP_Implics::vars. Referenced by SCIPimplicsAdd(), and SCIPimplicsDel().
creates an implications data structure
Definition at line 489 of file implics.c. References BMSallocBlockMemory, NULL, SCIP_ALLOC, and SCIP_OKAY. Referenced by implicsEnsureSize().
frees an implications data structure
Definition at line 518 of file implics.c. References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL. Referenced by SCIPimplicsDel(), SCIPvarAggregate(), SCIPvarRemove(), varFree(), and varRemoveImplicsVbs().
ensures, that arrays for x == 0 or x == 1 in implications data structure can store at least num entries
Definition at line 541 of file implics.c. References BMSreallocBlockMemoryArray, implicsCreate(), NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, and SCIPsetCalcMemGrowSize(). Referenced by SCIPimplicsAdd().
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
Definition at line 583 of file implics.c. References SCIP_Implics::nbinimpls, SCIP_Implics::nimpls, NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_VARTYPE_BINARY, SCIPsortedvecFindPtr(), SCIPvarGetType(), SCIP_Implics::types, and SCIP_Implics::vars. Referenced by implicsSearchImplic(), and SCIPimplicsGetVarImplics().
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)
Definition at line 691 of file implics.c. References implicsSearchVar(), NULL, and SCIP_BOUNDTYPE_LOWER. Referenced by SCIPimplicsAdd(), SCIPimplicsContainsImpl(), and SCIPimplicsDel().
adds an implication x == 0/1 -> y <= b or y >= b to the implications data structure; the implication must be non-redundant
Definition at line 728 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, SCIP_VARTYPE_BINARY, SCIPdebugMessage, SCIPsetIsFeasGE(), SCIPsetIsFeasGT(), SCIPsetIsFeasLE(), SCIPsetIsFeasLT(), SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarGetType(), SCIPvarGetUbGlobal(), SCIPvarIsActive(), and TRUE. Referenced by varAddImplic().
removes the implication x <= 0 or x >= 1 ==> y <= b or y >= b from the implications data structure
Definition at line 939 of file implics.c. References BMSmoveMemoryArray, checkImplics(), implicsSearchImplic(), NULL, SCIP_Bool, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_OKAY, SCIP_VARTYPE_BINARY, SCIPdebugMessage, SCIPimplicsFree(), SCIPvarGetName(), and SCIPvarGetType(). Referenced by varAddImplic(), and varRemoveImplicsVbs().
returns which implications on given variable y are contained in implications for x == 0 or x == 1
Definition at line 1004 of file implics.c. References implicsSearchVar(), and NULL.
returns whether an implication y <= b or y >= b is contained in implications for x == 0 or x == 1
Definition at line 1026 of file implics.c. References implicsSearchImplic(). Referenced by SCIPvarHasImplic().
creates a clique data structure with already created variables and values arrays in the size of 'size'
Definition at line 1081 of file implics.c. References BMSallocBlockMemory, FALSE, NULL, SCIP_ALLOC, and SCIP_OKAY. Referenced by SCIPcliquetableAdd().
frees a clique data structure
Definition at line 1111 of file implics.c. References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL. Referenced by SCIPcliquetableCleanup(), and SCIPcliquetableFree().
ensures, that clique arrays can store at least num entries
Definition at line 1128 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().
returns the position of the given variable/value pair in the clique; returns -1 if variable/value pair is not member of the clique
Definition at line 1154 of file implics.c. References NULL, SCIP_Clique::nvars, SCIPvarGetIndex(), SCIP_Clique::values, and SCIP_Clique::vars. Referenced by SCIPcliqueDelVar(), SCIPcliqueHasVar(), SCIPcliquelistCheck(), and SCIPcliquelistRemoveFromCliques().
returns whether the given variable/value pair is member of the given clique
Definition at line 1214 of file implics.c. References SCIPcliqueSearchVar().
adds a single variable to the given clique
Definition at line 1224 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, SCIPdebugMessage, SCIPsortedvecFindPtr(), SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarIsBinary(), TRUE, SCIP_Clique::values, and SCIP_Clique::vars. Referenced by SCIPvarAddClique().
removes a single variable from the given clique
Definition at line 1358 of file implics.c. References SCIP_Clique::id, NULL, SCIP_Clique::nvars, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_LOOSE, SCIPcliqueSearchVar(), SCIPdebugMessage, SCIPvarGetName(), SCIPvarGetStatus(), SCIPvarIsBinary(), SCIP_Clique::values, and SCIP_Clique::vars. Referenced by SCIPvarDelClique().
gets the position of the given clique in the cliques array; returns -1 if clique is not member of cliques array
Definition at line 1391 of file implics.c. References SCIP_Clique::id, and NULL. Referenced by cliqueCheck(), and SCIPcliquelistDel().
checks whether clique appears in all clique lists of the involved variables
Definition at line 1432 of file implics.c. References cliquesSearchClique(), NULL, SCIP_Clique::nvars, SCIPvarGetCliques(), SCIPvarGetIndex(), SCIPvarGetNCliques(), SCIP_Clique::values, and SCIP_Clique::vars. Referenced by SCIPcliquelistRemoveFromCliques(), and SCIPcliquetableAdd().
creates a clique list data structure
Definition at line 1461 of file implics.c. References BMSallocBlockMemory, NULL, SCIP_ALLOC, and SCIP_OKAY. Referenced by SCIPcliquelistAdd().
frees a clique list data structure
Definition at line 1480 of file implics.c. References BMSfreeBlockMemory, BMSfreeBlockMemoryArrayNull, and NULL. Referenced by SCIPcliquelistDel(), SCIPvarAggregate(), SCIPvarFix(), SCIPvarMultiaggregate(), and varFree().
ensures, that clique list arrays can store at least num entries
Definition at line 1497 of file implics.c. References BMSreallocBlockMemoryArray, SCIP_CliqueList::cliques, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIP_CliqueList::size. Referenced by SCIPcliquelistAdd().
adds a clique to the clique list
Definition at line 1521 of file implics.c. References cliquelistCreate(), cliquelistEnsureSize(), SCIP_Clique::id, SCIP_CliqueList::ncliques, NULL, SCIP_CALL, SCIP_OKAY, and SCIPdebugMessage. Referenced by SCIPvarAddClique(), and SCIPvarsAddClique().
removes a clique from the clique list
Definition at line 1557 of file implics.c. References BMSmoveMemoryArray, cliquesSearchClique(), SCIP_Clique::id, SCIP_CliqueList::ncliques, NULL, SCIP_OKAY, SCIPcliquelistFree(), and SCIPdebugMessage. Referenced by SCIPvarDelClique(), and SCIPvarDelCliqueFromList().
returns whether the given clique lists have a non-empty intersection, i.e. whether there is a clique that appears in both lists
Definition at line 1594 of file implics.c. References SCIP_CliqueList::cliques, FALSE, SCIP_CliqueList::ncliques, NULL, SCIPcliqueGetId(), and TRUE. Referenced by SCIPvarsHaveCommonClique().
removes all listed entries from the cliques
Definition at line 1672 of file implics.c. References BMSmoveMemoryArray, cliqueCheck(), SCIP_CliqueList::cliques, SCIP_Clique::id, SCIP_CliqueList::ncliques, NULL, SCIP_Clique::nvars, SCIP_Bool, SCIPcliqueSearchVar(), SCIPdebugMessage, SCIPvarGetCliques(), SCIPvarGetName(), SCIPvarGetNCliques(), SCIPvarIsBinary(), SCIP_Clique::values, and SCIP_Clique::vars. Referenced by SCIPvarAggregate(), SCIPvarFix(), and SCIPvarMultiaggregate().
creates a clique table data structure
Definition at line 1724 of file implics.c. References BMSallocMemory, NULL, SCIP_ALLOC, and SCIP_OKAY. Referenced by SCIPtransformProb().
frees a clique table data structure
Definition at line 1743 of file implics.c. References BMSfreeMemory, BMSfreeMemoryArrayNull, cliqueFree(), NULL, and SCIP_OKAY. Referenced by freeTransform().
ensures, that clique table arrays can store at least num entries
Definition at line 1768 of file implics.c. References BMSreallocMemoryArray, SCIP_CliqueTable::cliques, NULL, SCIP_ALLOC, SCIP_OKAY, SCIPsetCalcMemGrowSize(), and SCIP_CliqueTable::size. Referenced by SCIPcliquetableAdd().
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
Definition at line 1792 of file implics.c. References BMSallocBlockMemoryArray, BMSduplicateBlockMemoryArray, BMSfreeBlockMemoryArray, cliqueCheck(), cliqueCreateWithData(), SCIP_CliqueTable::cliques, cliquetableEnsureSize(), FALSE, SCIP_CliqueTable::ncliques, SCIP_CliqueTable::ncreatedcliques, NULL, SCIP_ALLOC, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_VARSTATUS_COLUMN, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_LOOSE, SCIP_VARSTATUS_MULTAGGR, SCIPdebugCheckClique, SCIPdebugMessage, SCIPsortPtrBool(), SCIPvarAddClique(), SCIPvarFixBinary(), SCIPvarGetLbGlobal(), SCIPvarGetStatus(), SCIPvarGetUbGlobal(), SCIPvarIsBinary(), SCIPvarsAddClique(), SCIPvarsGetProbvarBinary(), and TRUE. Referenced by SCIPaddClique().
returns TRUE iff both keys are equal Definition at line 2062 of file implics.c. References FALSE, NULL, SCIP_Clique::nvars, TRUE, SCIP_Clique::values, and SCIP_Clique::vars.
returns the hash value of the key Definition at line 2088 of file implics.c. References SCIP_Clique::nvars, SCIP_Clique::values, and SCIP_Clique::vars.
removes all empty and single variable cliques from the clique table, and converts all two variable cliques into implications; removes double entries from the clique table
Definition at line 2108 of file implics.c. References cliqueFree(), SCIP_CliqueTable::cliques, SCIP_Clique::eventsissued, FALSE, MAX, SCIP_CliqueTable::ncleanupaggrvars, SCIP_CliqueTable::ncleanupcliques, SCIP_CliqueTable::ncleanupfixedvars, SCIP_CliqueTable::ncliques, SCIP_Stat::npresolaggrvars, SCIP_Stat::npresolfixedvars, NULL, SCIP_Clique::nvars, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_HASHSIZE_CLIQUES, SCIP_HASHSIZE_CLIQUES_SMALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIPcalcHashtableSize(), SCIPeventCreateImplAdded(), SCIPeventqueueAdd(), SCIPeventqueueDelay(), SCIPeventqueueProcess(), SCIPhashtableCreate(), SCIPhashtableExists(), SCIPhashtableFree(), SCIPhashtableInsert(), SCIPvarAddImplic(), SCIPvarAddVlb(), SCIPvarAddVub(), SCIPvarDelCliqueFromList(), SCIPvarGetType(), SCIPvarIsBinary(), TRUE, SCIP_Clique::values, and SCIP_Clique::vars. Referenced by exitPresolve(), and presolveRound().
gets number of variable bounds contained in given variable bounds data structure
Definition at line 2273 of file implics.c. References SCIP_VBounds::len, and NULL. Referenced by SCIPvarAggregate(), SCIPvarGetNVlbs(), SCIPvarGetNVubs(), varAddTransitiveImplic(), and varRemoveImplicsVbs().
gets array of variables contained in given variable bounds data structure
Definition at line 2281 of file implics.c. References NULL, and SCIP_VBounds::vars. Referenced by SCIPvarAggregate(), SCIPvarGetVlbVars(), SCIPvarGetVubVars(), varAddTransitiveImplic(), and varRemoveImplicsVbs().
gets array of coefficients contained in given variable bounds data structure
Definition at line 2289 of file implics.c. References SCIP_VBounds::coefs, and NULL. Referenced by SCIPvarAggregate(), SCIPvarGetVlbCoefs(), SCIPvarGetVubCoefs(), varAddTransitiveImplic(), and varRemoveImplicsVbs().
gets array of constants contained in given variable bounds data structure
Definition at line 2297 of file implics.c. References SCIP_VBounds::constants, and NULL. Referenced by SCIPvarAggregate(), SCIPvarGetVlbConstants(), SCIPvarGetVubConstants(), varAddTransitiveImplic(), and varRemoveImplicsVbs().
gets number of implications for a given binary variable fixing
Definition at line 2305 of file implics.c. References SCIP_Implics::nimpls, and NULL. Referenced by SCIPvarAggregate(), SCIPvarGetNImpls(), varAddTransitiveBinaryClosureImplic(), and varRemoveImplicsVbs().
gets number of implications on binary variables for a given binary variable fixing
Definition at line 2314 of file implics.c. References SCIP_Implics::nbinimpls, and NULL. Referenced by SCIPvarGetImplRedcost(), SCIPvarGetNBinImpls(), and varRemoveImplicsVbs().
gets array with implied variables for a given binary variable fixing
Definition at line 2323 of file implics.c. References NULL, and SCIP_Implics::vars. Referenced by SCIPvarAggregate(), SCIPvarGetImplRedcost(), SCIPvarGetImplVars(), varAddTransitiveBinaryClosureImplic(), and varRemoveImplicsVbs().
gets array with implication types for a given binary variable fixing
Definition at line 2332 of file implics.c. References NULL, and SCIP_Implics::types. Referenced by SCIPvarAggregate(), SCIPvarGetImplRedcost(), SCIPvarGetImplTypes(), varAddTransitiveBinaryClosureImplic(), and varRemoveImplicsVbs().
gets array with implication bounds for a given binary variable fixing
Definition at line 2341 of file implics.c. References SCIP_Implics::bounds, and NULL. Referenced by SCIPvarAggregate(), SCIPvarGetImplBounds(), varAddTransitiveBinaryClosureImplic(), and varRemoveImplicsVbs().
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.
Definition at line 2353 of file implics.c. References SCIP_Implics::ids, and NULL. Referenced by SCIPvarGetImplIds().
gets number of variables in the cliques
Definition at line 2362 of file implics.c. References NULL, and SCIP_Clique::nvars. Referenced by addGLSCliques(), addNextLevelCliques(), collectBinaryCliqueData(), collectMinactImplicVars(), dfs(), insertSortedRootNeighbors(), isNeighbor(), propagateVbounds(), SCIPcopyImplicationsCliques(), SCIPnodePropagateImplics(), SCIPvarAddClique(), SCIPwriteCliqueGraph(), tcliquegraphConstructCliqueTable(), and tightenWeightsLift().
gets array of active problem variables in the cliques
Definition at line 2372 of file implics.c. References NULL, and SCIP_Clique::vars. Referenced by addGLSCliques(), addNextLevelCliques(), collectBinaryCliqueData(), collectMinactImplicVars(), dfs(), insertSortedRootNeighbors(), isNeighbor(), propagateVbounds(), SCIPcopyImplicationsCliques(), SCIPnodePropagateImplics(), SCIPvarAddClique(), SCIPwriteCliqueGraph(), tcliquegraphConstructCliqueTable(), and tightenWeightsLift().
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
Definition at line 2384 of file implics.c. References NULL, and SCIP_Clique::values. Referenced by addGLSCliques(), addNextLevelCliques(), collectBinaryCliqueData(), collectMinactImplicVars(), dfs(), insertSortedRootNeighbors(), isNeighbor(), propagateVbounds(), SCIPcopyImplicationsCliques(), SCIPnodePropagateImplics(), SCIPvarAddClique(), SCIPwriteCliqueGraph(), tcliquegraphConstructCliqueTable(), and tightenWeightsLift().
gets unique identifier of the clique
Definition at line 2394 of file implics.c. References SCIP_Clique::id, and NULL. Referenced by SCIP_DECL_HASHKEYVAL(), SCIPcliquelistsHaveCommonClique(), and tcliquegraphAddNode().
returns the number of cliques stored in the clique list
Definition at line 2404 of file implics.c. References SCIP_CliqueList::ncliques, and NULL. Referenced by SCIPcliquelistCheck(), SCIPvarAggregate(), and SCIPvarGetNCliques().
returns the cliques stored in the clique list, or NULL if the clique list is empty
Definition at line 2413 of file implics.c. References SCIP_CliqueList::cliques, and NULL. Referenced by SCIPcliquelistCheck(), SCIPvarAggregate(), and SCIPvarGetCliques().
checks whether variable is contained in all cliques of the cliquelist
Definition at line 2422 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().
gets the number of cliques stored in the clique table
Definition at line 2464 of file implics.c. References SCIP_CliqueTable::ncliques, and NULL. Referenced by presolve(), SCIPgetNCliques(), SCIPhaveVarsCommonClique(), and SCIPisPresolveFinished().
gets the array of cliques stored in the clique table
Definition at line 2474 of file implics.c. References SCIP_CliqueTable::cliques, and NULL. Referenced by SCIPgetCliques(). |