Detailed Description
gateextraction presolver
Definition in file presol_gateextraction.c.
#include "blockmemshell/memory.h"
#include "scip/cons_and.h"
#include "scip/cons_logicor.h"
#include "scip/cons_setppc.h"
#include "scip/presol_gateextraction.h"
#include "scip/pub_cons.h"
#include "scip/pub_message.h"
#include "scip/pub_misc.h"
#include "scip/pub_misc_sort.h"
#include "scip/pub_presol.h"
#include "scip/pub_var.h"
#include "scip/scip_cons.h"
#include "scip/scip_general.h"
#include "scip/scip_mem.h"
#include "scip/scip_message.h"
#include "scip/scip_param.h"
#include "scip/scip_presol.h"
#include "scip/scip_prob.h"
#include "scip/scip_var.h"
#include <string.h>
Go to the source code of this file.
Data Structures | |
struct | HashData |
Macros | |
#define | PRESOL_NAME "gateextraction" |
#define | PRESOL_DESC "presolver extracting gate(and)-constraints" |
#define | PRESOL_PRIORITY 1000000 |
#define | PRESOL_MAXROUNDS -1 |
#define | PRESOL_TIMING SCIP_PRESOLTIMING_EXHAUSTIVE /* timing of the presolver (fast, medium, or exhaustive) */ |
#define | HASHSIZE_LOGICORCONS 500 |
#define | HASHSIZE_SETPPCCONS 500 |
#define | DEFAULT_ONLYSETPART FALSE |
#define | DEFAULT_SEARCHEQUATIONS TRUE |
#define | DEFAULT_SORTING 1 |
Typedefs | |
typedef struct HashData | HASHDATA |
Functions | |
static | SCIP_DECL_HASHKEYEQ (hashdataKeyEqCons) |
static | SCIP_DECL_HASHKEYVAL (hashdataKeyValCons) |
static | SCIP_DECL_HASHKEYEQ (setppcHashdataKeyEqCons) |
static | SCIP_DECL_HASHKEYVAL (setppcHashdataKeyValCons) |
static void | presoldataInit (SCIP_PRESOLDATA *presoldata) |
static SCIP_RETCODE | presoldataInitHashtables (SCIP *scip, SCIP_PRESOLDATA *presoldata) |
static SCIP_RETCODE | createPresoldata (SCIP *scip, SCIP_PRESOLDATA *presoldata, SCIP_CONS **setppcs, int nsetppcs, SCIP_CONS **logicors, int nlogicors) |
static SCIP_RETCODE | cleanupHashDatas (SCIP *scip, SCIP_PRESOLDATA *presoldata) |
static SCIP_RETCODE | correctPresoldata (SCIP *scip, SCIP_PRESOLDATA *presoldata, SCIP_CONS **setppcs, int nsetppcs, SCIP_CONS **logicors, int nlogicors) |
static SCIP_RETCODE | extractGates (SCIP *scip, SCIP_PRESOLDATA *presoldata, int pos, SCIP_HASHMAP *varmap, SCIP_CONS **gateconss, SCIP_VAR **activevars, SCIP_VAR **posresultants, HASHDATA *hashdata, int *ndelconss, int *naddconss) |
static | SCIP_DECL_PRESOLCOPY (presolCopyGateextraction) |
static | SCIP_DECL_PRESOLFREE (presolFreeGateextraction) |
static | SCIP_DECL_PRESOLEXIT (presolExitGateextraction) |
static | SCIP_DECL_PRESOLINITPRE (presolInitpreGateextraction) |
static | SCIP_DECL_PRESOLEXITPRE (presolExitpreGateextraction) |
static | SCIP_DECL_PRESOLEXEC (presolExecGateextraction) |
SCIP_RETCODE | SCIPincludePresolGateextraction (SCIP *scip) |
Macro Definition Documentation
◆ PRESOL_NAME
#define PRESOL_NAME "gateextraction" |
Definition at line 54 of file presol_gateextraction.c.
◆ PRESOL_DESC
#define PRESOL_DESC "presolver extracting gate(and)-constraints" |
Definition at line 55 of file presol_gateextraction.c.
◆ PRESOL_PRIORITY
#define PRESOL_PRIORITY 1000000 |
priority of the presolver (>= 0: before, < 0: after constraint handlers); combined with propagators
Definition at line 56 of file presol_gateextraction.c.
◆ PRESOL_MAXROUNDS
#define PRESOL_MAXROUNDS -1 |
maximal number of presolving rounds the presolver participates in (-1: no limit)
Definition at line 57 of file presol_gateextraction.c.
◆ PRESOL_TIMING
#define PRESOL_TIMING SCIP_PRESOLTIMING_EXHAUSTIVE /* timing of the presolver (fast, medium, or exhaustive) */ |
Definition at line 58 of file presol_gateextraction.c.
◆ HASHSIZE_LOGICORCONS
#define HASHSIZE_LOGICORCONS 500 |
minimal size of hash table in logicor constraint tables
Definition at line 60 of file presol_gateextraction.c.
Referenced by presoldataInitHashtables().
◆ HASHSIZE_SETPPCCONS
#define HASHSIZE_SETPPCCONS 500 |
minimal size of hash table in setppc constraint tables
Definition at line 61 of file presol_gateextraction.c.
Referenced by presoldataInitHashtables().
◆ DEFAULT_ONLYSETPART
#define DEFAULT_ONLYSETPART FALSE |
should only set-partitioning constraints be extracted and no and-constraints
Definition at line 63 of file presol_gateextraction.c.
◆ DEFAULT_SEARCHEQUATIONS
#define DEFAULT_SEARCHEQUATIONS TRUE |
should we try to extract set-partitioning constraint out of one logicor and one corresponding set-packing constraint
Definition at line 64 of file presol_gateextraction.c.
◆ DEFAULT_SORTING
#define DEFAULT_SORTING 1 |
order logicor contraints to extract big-gates before smaller ones (-1), do not order them (0) or order them to extract smaller gates at first (1)
Definition at line 69 of file presol_gateextraction.c.
Typedef Documentation
◆ HASHDATA
Definition at line 115 of file presol_gateextraction.c.
Function Documentation
◆ SCIP_DECL_HASHKEYEQ() [1/2]
|
static |
returns TRUE iff both keys are equal; two constraints are equal if they have the same pointer
Definition at line 156 of file presol_gateextraction.c.
◆ SCIP_DECL_HASHKEYVAL() [1/2]
|
static |
returns the hash value of the key
Definition at line 200 of file presol_gateextraction.c.
◆ SCIP_DECL_HASHKEYEQ() [2/2]
|
static |
returns TRUE iff both keys are equal; two constraints are equal if they have the same pointer
Definition at line 219 of file presol_gateextraction.c.
◆ SCIP_DECL_HASHKEYVAL() [2/2]
|
static |
returns the hash value of the key
Definition at line 264 of file presol_gateextraction.c.
◆ presoldataInit()
|
static |
initialize gateextraction presolver data
- Parameters
-
presoldata data object of presolver
Definition at line 280 of file presol_gateextraction.c.
◆ presoldataInitHashtables()
|
static |
initialize gateextraction hashtables
- Parameters
-
scip SCIP data structure presoldata data object of presolver
Definition at line 306 of file presol_gateextraction.c.
References createPresoldata(), FALSE, HASHSIZE_LOGICORCONS, HASHSIZE_SETPPCCONS, NULL, SCIP_CALL, SCIP_OKAY, SCIPblkmem(), and SCIPhashtableCreate().
◆ createPresoldata()
|
static |
create useful set-packing information by adding new set-packing constraints with two variables
- Parameters
-
scip SCIP data structure presoldata data object of presolver setppcs active setppc constraints nsetppcs number of active setppc constraints logicors active logicor constraints nlogicors number of active logicor constraints
Definition at line 343 of file presol_gateextraction.c.
References cleanupHashDatas(), h, MAX, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_SETPPCTYPE_PACKING, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPallocBlockMemoryArray, SCIPallocBufferArray, SCIPcaptureCons(), SCIPcaptureVar(), SCIPconsIsActive(), SCIPconsIsModifiable(), SCIPduplicateBlockMemoryArray, SCIPfreeBlockMemoryArray, SCIPfreeBufferArray, SCIPgetBinvarRepresentative(), SCIPgetNVarsLogicor(), SCIPgetNVarsSetppc(), SCIPgetTypeSetppc(), SCIPgetVarsSetppc(), SCIPhashtableInsert(), SCIPvarGetIndex(), SCIPvarGetStatus(), and TRUE.
Referenced by correctPresoldata(), and presoldataInitHashtables().
◆ cleanupHashDatas()
|
static |
remove old setppchashdatas objects, so that the allocated memory will stay low
- Parameters
-
scip SCIP data structure presoldata data object of presolver
Definition at line 492 of file presol_gateextraction.c.
References correctPresoldata(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_SETPPCTYPE_PACKING, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPconsIsActive(), SCIPconsIsDeleted(), SCIPconsIsModifiable(), SCIPfreeBlockMemoryArray, SCIPgetBinvarRepresentative(), SCIPgetNVarsSetppc(), SCIPgetTypeSetppc(), SCIPhashtableExists(), SCIPhashtableInsert(), SCIPhashtableRemove(), SCIPreleaseCons(), SCIPreleaseVar(), SCIPvarGetStatus(), TRUE, and HashData::vars.
Referenced by correctPresoldata(), and createPresoldata().
◆ correctPresoldata()
|
static |
refresh useful set-packing information, delete redundant constraints and add new constraints
- Parameters
-
scip SCIP data structure presoldata data object of presolver setppcs active setppc constraints nsetppcs number of active setppc constraints logicors active setppc constraints nlogicors number of active setppc constraints
Definition at line 592 of file presol_gateextraction.c.
References cleanupHashDatas(), createPresoldata(), extractGates(), NULL, SCIP_Bool, SCIP_CALL, SCIP_NOMEMORY, SCIP_OKAY, SCIP_SETPPCTYPE_PACKING, SCIP_VARSTATUS_FIXED, SCIP_VARSTATUS_MULTAGGR, SCIPcalcMemGrowSize(), SCIPcaptureCons(), SCIPcaptureVar(), SCIPconsIsActive(), SCIPconsIsModifiable(), SCIPduplicateBlockMemoryArray, SCIPfreeBlockMemoryArray, SCIPgetBinvarRepresentative(), SCIPgetNVarsLogicor(), SCIPgetNVarsSetppc(), SCIPgetTypeSetppc(), SCIPgetVarsSetppc(), SCIPhashtableExists(), SCIPhashtableInsert(), SCIPhashtableRemove(), SCIPhashtableRemoveAll(), SCIPreallocBlockMemoryArray, SCIPreleaseCons(), SCIPvarGetIndex(), SCIPvarGetStatus(), and TRUE.
Referenced by cleanupHashDatas().
◆ extractGates()
|
static |
extract and-constraints and set-partitioning constraints
- Parameters
-
scip SCIP data structure presoldata data object of presolver pos position of logicor in usefullogicor array to presolve varmap variable map mapping inactive variables to their active representation gateconss allocated memory for all gate-constraints activevars allocated memory for active variables posresultants allocated memory for all possible resultant variables hashdata allocated memory for a hashdata object ndelconss pointer to store number of deleted constraints naddconss pointer to store number of added constraints
Definition at line 806 of file presol_gateextraction.c.
References HashData::cons, NULL, HashData::nvars, SCIP_Bool, SCIP_CALL, SCIP_DECL_PRESOLCOPY(), SCIP_LOCKTYPE_MODEL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPaddCons(), SCIPallocBufferArray, SCIPconsIsActive(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsAnd(), SCIPcreateConsSetpart(), SCIPdebugMsg, SCIPdebugPrintCons, SCIPdelCons(), SCIPfreeBufferArray, SCIPgetBinvarRepresentative(), SCIPgetNegatedVar(), SCIPgetNVarsLogicor(), SCIPgetVarsLogicor(), SCIPhashmapGetImage(), SCIPhashmapInsert(), SCIPhashtableRemove(), SCIPhashtableRetrieve(), SCIPreleaseCons(), SCIPsnprintf(), SCIPsortPtr(), SCIPvarCompare(), SCIPvarGetIndex(), SCIPvarGetLbLocal(), SCIPvarGetNegatedVar(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), SCIPvarGetUbLocal(), SCIPvarIsActive(), SCIPvarIsNegated(), and HashData::vars.
Referenced by correctPresoldata().
◆ SCIP_DECL_PRESOLCOPY()
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 1139 of file presol_gateextraction.c.
Referenced by extractGates().
◆ SCIP_DECL_PRESOLFREE()
|
static |
destructor of presolver to free user data (called when SCIP is exiting)
Definition at line 1154 of file presol_gateextraction.c.
◆ SCIP_DECL_PRESOLEXIT()
|
static |
deinitialization method of presolver (called before transformed problem is freed)
Definition at line 1181 of file presol_gateextraction.c.
◆ SCIP_DECL_PRESOLINITPRE()
|
static |
presolving initialization method of presolver (called when presolving is about to begin)
Definition at line 1258 of file presol_gateextraction.c.
References SCIP_OKAY.
◆ SCIP_DECL_PRESOLEXITPRE()
|
static |
presolving deinitialization method of presolver (called after presolving has been finished)
Definition at line 1266 of file presol_gateextraction.c.
◆ SCIP_DECL_PRESOLEXEC()
|
static |
execution method of presolver
Definition at line 1274 of file presol_gateextraction.c.