constraint handler for handling independent components
This constraint handler looks for independent components.
Definition in file cons_components.c.
#include "blockmemshell/memory.h"#include "scip/cons_components.h"#include "scip/debug.h"#include "scip/pub_cons.h"#include "scip/pub_heur.h"#include "scip/pub_message.h"#include "scip/pub_misc.h"#include "scip/pub_misc_sort.h"#include "scip/pub_sol.h"#include "scip/pub_tree.h"#include "scip/pub_var.h"#include "scip/scip_cons.h"#include "scip/scip_copy.h"#include "scip/scip_datastructures.h"#include "scip/scip_general.h"#include "scip/scip_heur.h"#include "scip/scip_mem.h"#include "scip/scip_message.h"#include "scip/scip_numerics.h"#include "scip/scip_param.h"#include "scip/scip_pricer.h"#include "scip/scip_prob.h"#include "scip/scip_probing.h"#include "scip/scip_sol.h"#include "scip/scip_solve.h"#include "scip/scip_solvingstats.h"#include "scip/scip_timing.h"#include "scip/scip_tree.h"#include "scip/scip_var.h"#include <string.h>Go to the source code of this file.
Data Structures | |
| struct | Component |
Macros | |
| #define | CONSHDLR_NAME "components" |
| #define | CONSHDLR_DESC "independent components constraint handler" |
| #define | CONSHDLR_ENFOPRIORITY 0 |
| #define | CONSHDLR_CHECKPRIORITY -9999999 |
| #define | CONSHDLR_EAGERFREQ -1 |
| #define | CONSHDLR_NEEDSCONS FALSE |
| #define | CONSHDLR_PROPFREQ 1 |
| #define | CONSHDLR_MAXPREROUNDS -1 |
| #define | CONSHDLR_DELAYPROP TRUE |
| #define | CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_FINAL |
| #define | CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
| #define | DEFAULT_MAXDEPTH -1 |
| #define | DEFAULT_MAXINTVARS 200 |
| #define | DEFAULT_MINSIZE 50 |
| #define | DEFAULT_MINRELSIZE 0.1 |
| #define | DEFAULT_NODELIMIT 10000LL |
| #define | DEFAULT_MAXCOMPWEIGHT 200.0 |
| #define | DEFAULT_INTFACTOR 1.0 |
| #define | DEFAULT_CONTFACTOR 0.2 |
| #define | DEFAULT_FEASTOLFACTOR 1.0 |
| #define | consEnfolpComponents NULL |
| #define | consEnfopsComponents NULL |
| #define | consCheckComponents NULL |
Functions | |
| static | SCIP_DECL_SORTPTRCOMP (componentSort) |
| static int | getMinsize (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata) |
| static SCIP_RETCODE | initComponent (PROBLEM *problem) |
| static SCIP_RETCODE | freeComponent (COMPONENT *component) |
| static SCIP_RETCODE | componentSetupWorkingSol (COMPONENT *component, SCIP_HASHMAP *varmap) |
| static SCIP_RETCODE | createSubscip (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP **subscip) |
| static SCIP_RETCODE | copyToSubscip (SCIP *scip, SCIP *subscip, const char *name, SCIP_VAR **vars, SCIP_VAR **subvars, SCIP_CONS **conss, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, int nvars, int nconss, SCIP_Bool *success) |
| static SCIP_RETCODE | componentCreateSubscip (COMPONENT *component, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_HASHMAP *varmap, SCIP_HASHMAP *consmap, SCIP_CONS **conss, int nconss, SCIP_Bool *success) |
| static SCIP_RETCODE | solveSubscip (SCIP *scip, SCIP *subscip, SCIP_Longint nodelimit, SCIP_Real gaplimit) |
| static SCIP_RETCODE | solveAndEvalSubscip (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP *subscip, SCIP_VAR **vars, SCIP_VAR **subvars, SCIP_CONS **conss, int nvars, int nconss, int *ndeletedconss, int *nfixedvars, int *ntightenedbounds, SCIP_RESULT *result, SCIP_Bool *solved) |
| static SCIP_RETCODE | solveComponent (COMPONENT *component, SCIP_Bool lastcomponent, SCIP_RESULT *result) |
| static SCIP_RETCODE | initProblem (SCIP *scip, PROBLEM **problem, SCIP_Real fixedvarsobjsum, int ncomponents) |
| static SCIP_RETCODE | freeProblem (PROBLEM **problem) |
| static SCIP_RETCODE | createConsComponents (SCIP *scip, SCIP_CONS **cons, const char *name, PROBLEM *problem) |
| static SCIP_RETCODE | sortComponents (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_DIGRAPH *digraph, SCIP_CONS **conss, SCIP_VAR **vars, int *varcomponent, int *conscomponent, int nconss, int nvars, int *firstvaridxpercons, int *ncompsminsize, int *ncompsmaxsize) |
| static SCIP_RETCODE | createAndSplitProblem (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_Real fixedvarsobjsum, SCIP_VAR **sortedvars, SCIP_CONS **sortedconss, int *compstartsvars, int *compstartsconss, int ncomponents, PROBLEM **problem) |
| static SCIP_RETCODE | solveProblem (PROBLEM *problem, SCIP_RESULT *result) |
| static SCIP_RETCODE | fillDigraph (SCIP *scip, SCIP_DIGRAPH *digraph, SCIP_CONS **conss, int nconss, int *unfixedvarpos, int nunfixedvars, int *firstvaridxpercons, SCIP_Bool *success) |
| static SCIP_RETCODE | findComponents (SCIP *scip, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_Real *fixedvarsobjsum, SCIP_VAR **sortedvars, SCIP_CONS **sortedconss, int *compstartsvars, int *compstartsconss, int *nsortedvars, int *nsortedconss, int *ncomponents, int *ncompsminsize, int *ncompsmaxsize) |
| static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopyComponents) |
| static | SCIP_DECL_CONSFREE (conshdlrFreeComponents) |
| static | SCIP_DECL_CONSPROP (consPropComponents) |
| static | SCIP_DECL_CONSPRESOL (consPresolComponents) |
| static | SCIP_DECL_CONSDELETE (consDeleteComponents) |
| static | SCIP_DECL_CONSENFORELAX (consEnforelaxComponents) |
| static | SCIP_DECL_CONSLOCK (consLockComponents) |
| static | SCIP_DECL_CONSINITSOL (consInitsolComponents) |
| SCIP_RETCODE | SCIPincludeConshdlrComponents (SCIP *scip) |
| #define CONSHDLR_NAME "components" |
Definition at line 68 of file cons_components.c.
| #define CONSHDLR_DESC "independent components constraint handler" |
Definition at line 69 of file cons_components.c.
| #define CONSHDLR_ENFOPRIORITY 0 |
priority of the constraint handler for constraint enforcing
Definition at line 70 of file cons_components.c.
| #define CONSHDLR_CHECKPRIORITY -9999999 |
priority of the constraint handler for checking feasibility
Definition at line 71 of file cons_components.c.
| #define CONSHDLR_EAGERFREQ -1 |
frequency for using all instead of only the useful constraints in separation, propagation and enforcement, -1 for no eager evaluations, 0 for first only
Definition at line 72 of file cons_components.c.
| #define CONSHDLR_NEEDSCONS FALSE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 74 of file cons_components.c.
| #define CONSHDLR_PROPFREQ 1 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 76 of file cons_components.c.
| #define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 77 of file cons_components.c.
| #define CONSHDLR_DELAYPROP TRUE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 78 of file cons_components.c.
| #define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_FINAL |
presolving timing of the constraint handler (fast, medium, or exhaustive)
Definition at line 80 of file cons_components.c.
| #define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
propagation timing mask of the constraint handler
Definition at line 81 of file cons_components.c.
| #define DEFAULT_MAXDEPTH -1 |
maximum depth of a node to run components detection (-1: disable component detection during solving)
Definition at line 83 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents(), SCIPincludeCutselDynamic(), SCIPincludePropProbing(), SCIPincludeSepaCGMIP(), SCIPincludeSepaConvexproj(), SCIPincludeSepaDisjunctive(), and SCIPincludeSepaEccuts().
| #define DEFAULT_MAXINTVARS 200 |
maximum number of integer (or binary) variables to solve a subproblem directly in presolving (-1: no solving)
Definition at line 84 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| #define DEFAULT_MINSIZE 50 |
minimum absolute size (in terms of variables) to solve a component individually during branch-and-bound
Definition at line 85 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| #define DEFAULT_MINRELSIZE 0.1 |
minimum relative size (in terms of variables) to solve a component individually during branch-and-bound
Definition at line 86 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| #define DEFAULT_NODELIMIT 10000LL |
maximum number of nodes to be solved in subproblems during presolving
Definition at line 87 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents(), and SCIPincludeNodeselUct().
| #define DEFAULT_MAXCOMPWEIGHT 200.0 |
The maximum weight of a component to be presolved
Definition at line 88 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| #define DEFAULT_INTFACTOR 1.0 |
the weight of an integer variable compared to binary variables
Definition at line 89 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| #define DEFAULT_CONTFACTOR 0.2 |
the weight of a continuous variable compared to a binary variable
Definition at line 90 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| #define DEFAULT_FEASTOLFACTOR 1.0 |
default value for parameter to increase the feasibility tolerance in all sub-SCIPs
Definition at line 91 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| #define consEnfolpComponents NULL |
Definition at line 2561 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| #define consEnfopsComponents NULL |
Definition at line 2562 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| #define consCheckComponents NULL |
Definition at line 2563 of file cons_components.c.
Referenced by SCIPincludeConshdlrComponents().
| typedef struct Problem PROBLEM |
data related to one problem (see below)
Definition at line 98 of file cons_components.c.
|
static |
comparison method for sorting components
Definition at line 169 of file cons_components.c.
References assert(), Component::lastdualbound, Component::lastprimalbound, Component::ncalls, NULL, Component::number, Component::problem, SCIP_Real, SCIPisFeasGT(), SCIPisFeasLT(), and SQR.
|
static |
returns minimum size of components to be solved individually during the branch-and-bound search
| scip | main SCIP data structure |
| conshdlrdata | constraint handler data |
Definition at line 215 of file cons_components.c.
References assert(), MAX, NULL, and SCIPgetNVars().
Referenced by componentCreateSubscip(), SCIP_DECL_CONSPROP(), and sortComponents().
|
static |
initialize component structure
| problem | subproblem structure |
Definition at line 232 of file cons_components.c.
References assert(), FALSE, Component::fixedsubvars, Component::fixedvars, Component::fixedvarsobjsum, Component::fixedvarssize, Component::lastbestsolindex, Component::lastdualbound, Component::lastprimalbound, Component::lastsolindex, Component::laststatus, Component::ncalls, Component::nfixedvars, NULL, Component::number, Component::nvars, Component::problem, SCIP_OKAY, SCIP_STATUS_UNKNOWN, SCIPinfinity(), Component::solved, Component::subscip, Component::subvars, Component::vars, and Component::workingsol.
Referenced by createAndSplitProblem().
|
static |
free component structure
| component | pointer to component structure |
Definition at line 274 of file cons_components.c.
References assert(), Component::fixedsubvars, Component::fixedvars, Component::fixedvarssize, NULL, Component::number, Component::nvars, Component::problem, SCIP_CALL, SCIP_OKAY, SCIPdebugMsg, SCIPfree(), SCIPfreeBlockMemoryArray, SCIPfreeSol(), Component::subscip, Component::subvars, Component::vars, and Component::workingsol.
Referenced by freeProblem().
|
static |
create the working solution for a given component, store fixed variables and the corresponding objective offset
| component | component structure |
| varmap | variable hashmap |
Definition at line 322 of file cons_components.c.
References assert(), FALSE, Component::fixedsubvars, Component::fixedvars, Component::fixedvarsobjsum, Component::fixedvarssize, i, Component::nfixedvars, NULL, Component::nvars, nvars, Component::problem, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PROBLEM, SCIPallocBlockMemoryArray, SCIPcreateOrigSol(), SCIPdebugAddSolVal, SCIPdebugGetSolVal, SCIPdebugMsg, SCIPdebugSolEnable, SCIPdebugSolIsEnabled, SCIPdebugSolIsValidInSubtree, SCIPgetNOrigVars(), SCIPgetNVars(), SCIPgetStage(), SCIPgetVars(), SCIPhashmapGetImage(), SCIPisEQ(), SCIPisLT(), SCIPisZero(), SCIPsetSolVal(), SCIPtransformProb(), SCIPvarGetIndex(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), Component::subscip, Component::subvars, Component::vars, and Component::workingsol.
Referenced by createAndSplitProblem().
|
static |
create a sub-SCIP for the given variables and constraints
| scip | main SCIP data structure |
| conshdlrdata | constraint handler data |
| subscip | pointer to store created sub-SCIP |
Definition at line 456 of file cons_components.c.
References assert(), CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_PARAMSETTING_OFF, SCIP_STAGE_PRESOLVING, SCIPconshdlrGetData(), SCIPcopyParamSettings(), SCIPcopyPlugins(), SCIPcreate(), SCIPdebugSolIsValidInSubtree, SCIPfindConshdlr(), SCIPfixParam(), SCIPfree(), SCIPgetDepth(), SCIPgetStage(), SCIPisParamFixed(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsetPresolving(), SCIPsetRealParam(), and TRUE.
Referenced by componentCreateSubscip(), and SCIP_DECL_CONSPRESOL().
|
static |
copies the given variables and constraints to the given sub-SCIP
| scip | source SCIP |
| subscip | target SCIP |
| name | name for copied problem |
| vars | array of variables to copy |
| subvars | array to fill with copied vars |
| conss | constraint to copy |
| varmap | hashmap used for the copy process of variables |
| consmap | hashmap used for the copy process of constraints |
| nvars | number of variables to copy |
| nconss | number of constraints to copy |
| success | pointer to store whether copying was successful |
Definition at line 549 of file cons_components.c.
References assert(), FALSE, i, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPaddCons(), SCIPconsGetHdlr(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPcopyProb(), SCIPgetConsCopy(), SCIPgetVarCopy(), SCIPreleaseCons(), TRUE, and vars.
Referenced by componentCreateSubscip(), and SCIP_DECL_CONSPRESOL().
|
static |
create the sub-SCIP for a given component
| component | component structure |
| conshdlrdata | constraint handler data |
| varmap | variable hashmap used to improve performance |
| consmap | constraint hashmap used to improve performance |
| conss | constraints contained in this component |
| nconss | number of constraints contained in this component |
| success | pointer to store whether the copying process was successful |
Definition at line 614 of file cons_components.c.
References assert(), CONSHDLR_NAME, copyToSubscip(), createSubscip(), FALSE, getMinsize(), NULL, Component::number, Component::nvars, Component::problem, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPfree(), SCIPsetIntParam(), SCIPsnprintf(), Component::subscip, Component::subvars, TRUE, and Component::vars.
Referenced by createAndSplitProblem().
|
static |
solve a given sub-SCIP up to the given limits
| scip | main SCIP |
| subscip | sub-SCIP to solve |
| nodelimit | node limit |
| gaplimit | gap limit |
Definition at line 672 of file cons_components.c.
References assert(), FALSE, MAX, NULL, SCIP_Bool, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIPcopyLimits(), SCIPdebugMsg, SCIPgetBoolParam(), SCIPgetMemExternEstim(), SCIPgetMemUsed(), SCIPgetParam(), SCIPgetRealParam(), SCIPgetSolvingTime(), SCIPisInfinity(), SCIPprintBestSol(), SCIPprintStatistics(), SCIPsetLongintParam(), SCIPsetRealParam(), and SCIPsolve().
Referenced by solveAndEvalSubscip(), and solveComponent().
|
static |
solve a connected component during presolving and evaluate the result
| scip | SCIP main data structure |
| conshdlrdata | the components constraint handler data |
| subscip | sub-SCIP to be solved |
| vars | array of variables copied to this component |
| subvars | array of sub-SCIP variables corresponding to the vars array |
| conss | array of constraints copied to this component |
| nvars | number of variables copied to this component |
| nconss | number of constraints copied to this component |
| ndeletedconss | pointer to store the number of deleted constraints |
| nfixedvars | pointer to store the number of fixed variables |
| ntightenedbounds | pointer to store the number of bound tightenings |
| result | pointer to store the result of the component solving |
| solved | pointer to store if the problem was solved to optimality |
Definition at line 763 of file cons_components.c.
References assert(), FALSE, i, MAX, MIN, NULL, nvars, result, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_OKAY, SCIP_Real, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_INFORUNBD, SCIP_STATUS_OPTIMAL, SCIP_STATUS_UNBOUNDED, SCIP_SUCCESS, SCIP_UNBOUNDED, SCIPallocBufferArray, SCIPcheckSol(), SCIPcheckSolOrig(), SCIPcreateOrigSol(), SCIPdebugMsg, SCIPdelCons(), SCIPfixVar(), SCIPfreeBufferArray, SCIPfreeSol(), SCIPfreeTransform(), SCIPgetBestSol(), SCIPgetNSols(), SCIPgetSolOrigObj(), SCIPgetSolVal(), SCIPgetSolvingTime(), SCIPgetStatus(), SCIPisFeasEQ(), SCIPisFeasGE(), SCIPisFeasLE(), SCIPisGE(), SCIPisGT(), SCIPisLE(), SCIPisLT(), SCIPisNegative(), SCIPisPositive(), SCIPsetSolVal(), SCIPsolGetOrigObj(), SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), SCIPvarMarkDeleteGlobalStructures(), sol, solveSubscip(), TRUE, var, and vars.
Referenced by SCIP_DECL_CONSPRESOL().
|
static |
(continues) solving a connected component
| component | component structure |
| lastcomponent | is this the last component to be solved? |
| result | pointer to store the result of the solving process |
Definition at line 1020 of file cons_components.c.
References ABS, assert(), FALSE, Component::fixedsubvars, Component::fixedvarsobjsum, Component::lastbestsolindex, Component::lastdualbound, Component::lastprimalbound, Component::lastsolindex, Component::laststatus, MAX, MIN, Component::ncalls, Component::nfixedvars, NULL, Component::nvars, nvars, Component::problem, result, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_OKAY, SCIP_Real, SCIP_STAGE_PROBLEM, SCIP_STATUS_BESTSOLLIMIT, SCIP_STATUS_DUALLIMIT, SCIP_STATUS_GAPLIMIT, SCIP_STATUS_INFEASIBLE, SCIP_STATUS_INFORUNBD, SCIP_STATUS_MEMLIMIT, SCIP_STATUS_NODELIMIT, SCIP_STATUS_OPTIMAL, SCIP_STATUS_PRIMALLIMIT, SCIP_STATUS_RESTARTLIMIT, SCIP_STATUS_SOLLIMIT, SCIP_STATUS_STALLNODELIMIT, SCIP_STATUS_TERMINATE, SCIP_STATUS_TIMELIMIT, SCIP_STATUS_TOTALNODELIMIT, SCIP_STATUS_UNBOUNDED, SCIP_STATUS_UNKNOWN, SCIP_STATUS_USERINTERRUPT, SCIP_SUCCESS, SCIP_UNBOUNDED, SCIP_VERBLEVEL_NORMAL, SCIPaddNNodes(), SCIPaddSol(), SCIPcheckSol(), SCIPcheckSolOrig(), SCIPdebugMsg, SCIPfindHeur(), SCIPfree(), SCIPfreeSol(), SCIPgetBestSol(), SCIPgetCutoffbound(), SCIPgetDualbound(), SCIPgetGap(), SCIPgetLongintParam(), SCIPgetNNodes(), SCIPgetPrimalbound(), SCIPgetProbName(), SCIPgetSolOrigObj(), SCIPgetSolTransObj(), SCIPgetSolVal(), SCIPgetSolvingTime(), SCIPgetStage(), SCIPgetStatus(), SCIPheurGetName(), SCIPinfinity(), SCIPinterruptSolve(), SCIPisEQ(), SCIPisGE(), SCIPisInfinity(), SCIPisLE(), SCIPisLT(), SCIPisSumLT(), SCIPprintDisplayLine(), SCIPretransformObj(), SCIPsetSolVal(), SCIPsolGetHeur(), SCIPsolGetIndex(), SCIPsolSetHeur(), SCIPupdateCutoffbound(), SCIPupdateLocalLowerbound(), SCIPvarGetLbGlobal(), SCIPvarIsActive(), sol, Component::solved, solveSubscip(), Component::subscip, Component::subvars, TRUE, var, Component::vars, vars, and Component::workingsol.
Referenced by solveProblem().
|
static |
initialize subproblem structure
| scip | SCIP data structure |
| problem | pointer to subproblem structure |
| fixedvarsobjsum | objective contribution of all locally fixed variables |
| ncomponents | number of independent components |
Definition at line 1350 of file cons_components.c.
References assert(), NULL, nvars, SCIP_CALL, SCIP_LONGINT_FORMAT, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPallocBlockMemory, SCIPallocBlockMemoryArray, SCIPcreateSol(), SCIPdebugMsg, SCIPduplicateMemoryArray, SCIPgetCurrentNode(), SCIPgetDepth(), SCIPgetNVars(), SCIPgetProbName(), SCIPgetVars(), SCIPisFeasEQ(), SCIPnodeGetNumber(), SCIPpqueueCreate(), SCIPsetSolVal(), SCIPsnprintf(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and vars.
Referenced by createAndSplitProblem().
|
static |
free subproblem structure
| problem | pointer to problem to free |
Definition at line 1412 of file cons_components.c.
References assert(), c, freeComponent(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPfreeMemoryArray, SCIPfreeSol(), and SCIPpqueueFree().
Referenced by createAndSplitProblem(), and SCIP_DECL_CONSDELETE().
|
static |
creates and captures a components constraint
| scip | SCIP data structure |
| cons | pointer to hold the created constraint |
| name | name of constraint |
| problem | problem to be stored in the constraint |
Definition at line 1456 of file cons_components.c.
References CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), and TRUE.
Referenced by SCIP_DECL_CONSPROP().
|
static |
sort the components by size and sort vars and conss arrays by component numbers
| scip | SCIP data structure |
| conshdlrdata | constraint handler data |
| digraph | directed graph |
| conss | constraints |
| vars | variables |
| varcomponent | component numbers for the variables |
| conscomponent | array to store component numbers for the constraints |
| nconss | number of constraints |
| nvars | number of variables |
| firstvaridxpercons | array with index of first variable in vars array for each constraint |
| ncompsminsize | pointer to store the number of components not exceeding the minimum size |
| ncompsmaxsize | pointer to store the number of components not exceeding the maximum size |
Definition at line 1484 of file cons_components.c.
References assert(), c, getMinsize(), nbinvars, nintvars, NULL, nvars, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPallocBufferArray, SCIPdigraphGetComponent(), SCIPdigraphGetNComponents(), SCIPfreeBufferArray, SCIPsortIntPtr(), SCIPsortRealInt(), SCIPvarGetType(), and vars.
Referenced by findComponents().
|
static |
create PROBLEM structure for the current node and split it into components
| scip | SCIP data structure |
| conshdlrdata | constraint handler data |
| fixedvarsobjsum | objective contribution of all locally fixed variables |
| sortedvars | array of unfixed variables sorted by components |
| sortedconss | array of (checked) constraints sorted by components |
| compstartsvars | start points of components in sortedvars array |
| compstartsconss | start points of components in sortedconss array |
| ncomponents | number of components |
| problem | pointer to store problem structure |
Definition at line 1600 of file cons_components.c.
References assert(), componentCreateSubscip(), componentSetupWorkingSol(), freeProblem(), i, initComponent(), initProblem(), nbinvars, nintvars, NULL, Component::number, Component::nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPallocBlockMemoryArray, SCIPblkmem(), SCIPdebugMsg, SCIPduplicateBlockMemoryArray, SCIPgetCurrentNode(), SCIPgetDepth(), SCIPgetNVars(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPnodeGetNumber(), SCIPpqueueInsert(), SCIPvarGetType(), SCIPvarIsActive(), Component::subvars, TRUE, and Component::vars.
Referenced by SCIP_DECL_CONSPROP().
|
static |
continue solving a problem
| problem | problem structure |
| result | result pointer for the problem solve |
Definition at line 1714 of file cons_components.c.
References assert(), NULL, result, SCIP_CALL, SCIP_CUTOFF, SCIP_DELAYNODE, SCIP_OKAY, SCIP_SUCCESS, SCIP_UNBOUNDED, SCIPpqueueInsert(), SCIPpqueueNElems(), SCIPpqueueRemove(), solveComponent(), and Component::solved.
Referenced by SCIP_DECL_CONSPROP().
|
static |
loop over constraints, get active variables and fill directed graph
| scip | SCIP data structure |
| digraph | directed graph |
| conss | constraints |
| nconss | number of constraints |
| unfixedvarpos | mapping from variable problem index to unfixed var index |
| nunfixedvars | number of unfixed variables |
| firstvaridxpercons | array to store for each constraint the index in the local vars array of the first variable of the constraint |
| success | flag indicating successful directed graph filling |
Definition at line 1758 of file cons_components.c.
References assert(), BMSclearMemoryArray, c, FALSE, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetName(), SCIPdigraphAddArc(), SCIPfreeBufferArray, SCIPgetActiveVars(), SCIPgetConsNVars(), SCIPgetConsVars(), SCIPgetNVars(), SCIPisStopped(), SCIPreallocBufferArray, SCIPvarGetProbindex(), SCIPwarningMessage(), and TRUE.
Referenced by findComponents().
|
static |
search for components in the problem
| scip | SCIP main data structure |
| conshdlrdata | the components constraint handler data |
| fixedvarsobjsum | objective contribution of all locally fixed variables, or NULL if fixed variables should not be disregarded |
| sortedvars | array to store variables sorted by components, should have enough size for all variables |
| sortedconss | array to store (checked) constraints sorted by components, should have enough size for all constraints |
| compstartsvars | start points of components in sortedvars array |
| compstartsconss | start points of components in sortedconss array |
| nsortedvars | pointer to store the number of variables belonging to any component |
| nsortedconss | pointer to store the number of (checked) constraints in components |
| ncomponents | pointer to store the number of components |
| ncompsminsize | pointer to store the number of components not exceeding the minimum size |
| ncompsmaxsize | pointer to store the number of components not exceeding the maximum size |
Definition at line 1904 of file cons_components.c.
References assert(), c, fillDigraph(), i, MAX, NULL, nvars, SCIP_Bool, SCIP_CALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIP_Real, SCIP_VERBLEVEL_FULL, SCIPallocBufferArray, SCIPcreateDigraph(), SCIPdigraphComputeUndirectedComponents(), SCIPdigraphFree(), SCIPdigraphSetSizes(), SCIPfreeBufferArray, SCIPgetConss(), SCIPgetCurrentNode(), SCIPgetDepth(), SCIPgetNConss(), SCIPgetNVars(), SCIPgetVars(), SCIPisLT(), SCIPnodeGetNumber(), SCIPvarGetLbLocal(), SCIPvarGetNLocksDownType(), SCIPvarGetNLocksUpType(), SCIPvarGetObj(), SCIPvarGetUbLocal(), SCIPverbMessage(), sortComponents(), and vars.
Referenced by SCIP_DECL_CONSPRESOL(), and SCIP_DECL_CONSPROP().
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 2096 of file cons_components.c.
References assert(), CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrComponents(), TRUE, and valid.
|
static |
destructor of constraint handler to free user data (called when SCIP is exiting)
Definition at line 2112 of file cons_components.c.
References assert(), NULL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrSetData(), and SCIPfreeBlockMemory.
|
static |
domain propagation method of constraint handler
Definition at line 2128 of file cons_components.c.
References assert(), c, CONSHDLR_NAME, createAndSplitProblem(), createConsComponents(), findComponents(), getMinsize(), NULL, result, SCIP_CALL, SCIP_DELAYNODE, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_Longint, SCIP_LONGINT_MAX, SCIP_OKAY, SCIP_Real, SCIPaddConsNode(), SCIPallocBufferArray, SCIPallowStrongDualReds(), SCIPallowWeakDualReds(), SCIPconsGetData(), SCIPconshdlrGetConss(), SCIPconshdlrGetData(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetName(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPgetCurrentNode(), SCIPgetDepth(), SCIPgetLongintParam(), SCIPgetNActivePricers(), SCIPgetNConss(), SCIPgetNNodes(), SCIPgetNVars(), SCIPinProbing(), SCIPinRepropagation(), SCIPisStopped(), SCIPnodeGetNumber(), SCIPreleaseCons(), and solveProblem().
|
static |
presolving method of constraint handler
Definition at line 2294 of file cons_components.c.
References assert(), CONSHDLR_NAME, copyToSubscip(), createSubscip(), findComponents(), i, nbinvars, nintvars, NULL, nvars, result, SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_DIDNOTRUN, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIP_STAGE_INIT, SCIP_STAGE_PRESOLVING, SCIP_UNBOUNDED, SCIP_VARTYPE_BINARY, SCIP_VARTYPE_INTEGER, SCIPallocBufferArray, SCIPallowStrongDualReds(), SCIPallowWeakDualReds(), SCIPblkmem(), SCIPconshdlrGetData(), SCIPconshdlrGetNActiveConss(), SCIPconshdlrGetName(), SCIPdebugAddSolVal, SCIPdebugGetSolVal, SCIPdebugMsg, SCIPdebugSolEnable, SCIPdebugSolIsEnabled, SCIPfree(), SCIPfreeBufferArray, SCIPgetNActivePricers(), SCIPgetNBinVars(), SCIPgetNConss(), SCIPgetNContVars(), SCIPgetNImplVars(), SCIPgetNIntVars(), SCIPgetNVars(), SCIPgetProbName(), SCIPgetStage(), SCIPhashmapCreate(), SCIPhashmapFree(), SCIPinProbing(), SCIPisPresolveFinished(), SCIPisStopped(), SCIPsetBoolParam(), SCIPsetIntParam(), SCIPsnprintf(), SCIPvarGetType(), SCIPvarIsActive(), solveAndEvalSubscip(), and TRUE.
|
static |
frees specific constraint data
Definition at line 2519 of file cons_components.c.
References assert(), CONSHDLR_NAME, freeProblem(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPconshdlrGetName().
|
static |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 2533 of file cons_components.c.
References assert(), NULL, result, SCIP_FEASIBLE, and SCIP_OKAY.
|
static |
variable rounding lock method of constraint handler
Definition at line 2545 of file cons_components.c.
References SCIP_OKAY.
|
static |
solving process initialization method of constraint handler (called when branch and bound process is about to begin)
Definition at line 2553 of file cons_components.c.