Detailed Description
constraint handler for cumulative constraints with optional activities
Given a set of jobs \(J\). Each job~ \(j\) has a binary variables \(x_j\) which is one if this job is scheduled on that machine (otherwise it is zero), an integer start time variables \(S_j\), a processing time \(p_j\), and a demands \(d_j\). Besides that an integer resource capacity \(C\).
The optcumulative enfoces the cumulative conditions for those jobs which are assigned to that machine. Let \(J'\) be the subset of jobs assigned to that optcumulative constraint, then the cumulative constraint ensures that for each point in time \(t\) \(\sum_{j\in J': S_j \leq t < S_j + p_j} d_j \leq C\) holds.
Propagation:
LP Relaxation:
- let est(J) the earliest start time of all jobs of set \(J\) and lct(J) the latest completion time for all jobs of set \(J\), then the following linear constraint has to hold \(\sum_{j\in J} p_j \cdot d_j \leq (lct(J) - est(J)) \cdot C\)
Definition in file cons_optcumulative.c.
#include <assert.h>
#include <string.h>
#include "cons_optcumulative.h"
#include "scip/cons_cumulative.h"
#include "scip/cons_knapsack.h"
#include "scip/scipdefplugins.h"
Go to the source code of this file.
Functions | |
static SCIP_RETCODE | unlockRounding (SCIP *scip, SCIP_CONS *cons, SCIP_VAR *binvar, SCIP_VAR *var, SCIP_Bool downlock, SCIP_Bool uplock) |
static SCIP_RETCODE | catchEventBinvar (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos) |
static SCIP_RETCODE | dropEventBinvar (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos) |
static SCIP_RETCODE | catchEventIntvar (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos) |
static SCIP_RETCODE | dropEventIntvar (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlr, int pos) |
static SCIP_RETCODE | catchAllEvents (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlrbinvars, SCIP_EVENTHDLR *eventhdlrintvars) |
static SCIP_RETCODE | dropAllEvents (SCIP *scip, SCIP_CONS *cons, SCIP_EVENTHDLR *eventhdlrbinvars, SCIP_EVENTHDLR *eventhdlrintvars) |
static void | createSortedEventpoints (SCIP *scip, SCIP_CONSDATA *consdata, int *starttimes, int *endtimes, int *startindices, int *endindices, SCIP_Bool local) |
static SCIP_Longint | computeMaxEnergy (SCIP *scip, SCIP_CONSDATA *consdata, int starttime, int endtime) |
static SCIP_RETCODE | collectVars (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_VAR **vars, SCIP_Longint *weights, int *nvars, int starttime, int endtime) |
static int | removeRedundantRows (SCIP_Longint *rowtightness, int *startidxs, int nrows, SCIP_Longint tightness) |
static SCIP_RETCODE | createRow (SCIP *scip, SCIP_CONSHDLR *conshdlr, const char *name, SCIP_VAR **vars, SCIP_Longint *weights, int nvars, SCIP_Longint capacity, SCIP_Bool local, SCIP_Bool *rowadded, SCIP_Bool *consadded, SCIP_Bool *cutoff) |
static SCIP_RETCODE | addRelaxation (SCIP *scip, SCIP_CONSHDLR *conshdlr, SCIP_CONSHDLRDATA *conshdlrdata, SCIP_CONS *cons, SCIP_Bool *rowadded, SCIP_Bool *consadded, SCIP_Bool *cutoff) |
static void | collectActivities (SCIP_CONSDATA *consdata, SCIP_VAR **binvars, SCIP_VAR **vars, int *durations, int *demands, int *nfixedones, int *nfixedzeros, SCIP_Bool *auxiliary) |
static void | collectSolActivities (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_SOL *sol, SCIP_VAR **binvars, SCIP_VAR **vars, int *durations, int *demands, int *nvars, int *nfixedones, int *nfixedzeros, SCIP_Bool *auxiliary) |
static SCIP_RETCODE | solveCumulative (SCIP *scip, int nvars, SCIP_VAR **vars, int *durations, int *demands, int capacity, int hmin, int hmax, SCIP_Bool local, SCIP_Real *ests, SCIP_Real *lsts, SCIP_Longint maxnodes, SCIP_Bool *solved, SCIP_Bool *infeasible, SCIP_Bool *unbounded, SCIP_Bool *error) |
static SCIP_RETCODE | createConflictCons (SCIP *scip, const char *name, SCIP_VAR **binvars, int nvars) |
static SCIP_RETCODE | checkRedundancy (SCIP *scip, SCIP_CONS *cons, int *ndelconss, SCIP_Bool *redundant) |
static SCIP_RETCODE | solveSubproblem (SCIP *scip, SCIP_CONS *cons, SCIP_Bool conflictanalysis, SCIP_CONSDATA *consdata, SCIP_VAR **binvars, SCIP_VAR **vars, int *durations, int *demands, int nvars, int *nfixedvars, int *nchgbds, int *ndelconss, SCIP_Bool *cutoff) |
static SCIP_RETCODE | checkCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol, SCIP_Bool *violated, SCIP_Bool printreason) |
static SCIP_RETCODE | enfopsCons (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *trysol, SCIP_Bool *violated, SCIP_Bool *consadded, SCIP_Bool *solfeasible) |
static SCIP_RETCODE | upgradeCons (SCIP *scip, SCIP_CONS *cons, int *ndelconss, int *nupgdconss, SCIP_Bool *mustpropagate) |
static SCIP_RETCODE | fixIntegerVariable (SCIP *scip, SCIP_VAR *var, SCIP_Bool downlock, SCIP_Bool uplock, int *nchgbds) |
static SCIP_RETCODE | consdataDeletePos (SCIP *scip, SCIP_CONSDATA *consdata, SCIP_CONS *cons, int pos) |
static SCIP_RETCODE | applyZeroFixings (SCIP *scip, SCIP_CONS *cons, int *nchgcoefs, int *nchgbds) |
static SCIP_RETCODE | removeIrrelevantJobs (SCIP *scip, SCIP_CONS *cons) |
static SCIP_RETCODE | presolveCumulativeCondition (SCIP *scip, SCIP_CONS *cons, int *nfixedvars, int *nchgcoefs, int *nchgsides, SCIP_Bool *cutoff) |
static SCIP_RETCODE | createSetPackingCons (SCIP *scip, SCIP_VAR *var1, SCIP_VAR *var2) |
static SCIP_RETCODE | createVarboundCons (SCIP *scip, SCIP_VAR *binvar, SCIP_VAR *intvar, int bound, SCIP_Bool lower) |
static SCIP_RETCODE | createBounddisjunctionCons (SCIP *scip, SCIP_VAR *binvar, SCIP_VAR *intvar, int lb, int ub) |
static SCIP_RETCODE | detectImplications (SCIP *scip, SCIP_CONS *cons, int *nchgcoefs, int *naddconss) |
static SCIP_RETCODE | propagateCons (SCIP *scip, SCIP_CONS *cons, SCIP_Bool conflictanalysis, int *nfixedvars, int *nchgbds, int *ndelconss, SCIP_Bool *cutoff) |
static | SCIP_DECL_CONSHDLRCOPY (conshdlrCopyOptcumulative) |
static | SCIP_DECL_CONSFREE (consFreeOptcumulative) |
static | SCIP_DECL_CONSINITPRE (consInitpreOptcumulative) |
static | SCIP_DECL_CONSEXITSOL (consExitsolOptcumulative) |
static | SCIP_DECL_CONSDELETE (consDeleteOptcumulative) |
static | SCIP_DECL_CONSTRANS (consTransOptcumulative) |
static | SCIP_DECL_CONSINITLP (consInitlpOptcumulative) |
static | SCIP_DECL_CONSSEPALP (consSepalpOptcumulative) |
static | SCIP_DECL_CONSENFOLP (consEnfolpOptcumulative) |
static | SCIP_DECL_CONSENFOPS (consEnfopsOptcumulative) |
static | SCIP_DECL_CONSCHECK (consCheckOptcumulative) |
static | SCIP_DECL_CONSPROP (consPropOptcumulative) |
static | SCIP_DECL_CONSPRESOL (consPresolOptcumulative) |
static | SCIP_DECL_CONSRESPROP (consRespropOptcumulative) |
static | SCIP_DECL_CONSLOCK (consLockOptcumulative) |
static | SCIP_DECL_CONSPRINT (consPrintOptcumulative) |
static | SCIP_DECL_CONSCOPY (consCopyOptcumulative) |
static | SCIP_DECL_CONSPARSE (consParseOptcumulative) |
static | SCIP_DECL_EVENTEXEC (eventExecOptcumulativeBinvars) |
static | SCIP_DECL_EVENTEXEC (eventExecOptcumulativeIntvars) |
SCIP_RETCODE | SCIPincludeConshdlrOptcumulative (SCIP *scip) |
SCIP_RETCODE | SCIPcreateConsOptcumulative (SCIP *scip, SCIP_CONS **cons, const char *name, int nvars, SCIP_VAR **vars, SCIP_VAR **binvars, int *durations, int *demands, int capacity, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode) |
SCIP_RETCODE | SCIPsetHminOptcumulative (SCIP *scip, SCIP_CONS *cons, int hmin) |
int | SCIPgetHminOptcumulative (SCIP *scip, SCIP_CONS *cons) |
SCIP_RETCODE | SCIPsetHmaxOptcumulative (SCIP *scip, SCIP_CONS *cons, int hmax) |
int | SCIPgetHmaxOptcumulative (SCIP *scip, SCIP_CONS *cons) |
Debug Methods | |
static void | checkCounters (SCIP_CONSDATA *consdata) |
Miscellaneous Methods | |
static int | convertBoundToInt (SCIP *scip, SCIP_Real bound) |
Constraint data methods | |
static SCIP_RETCODE | consdataCreate (SCIP *scip, SCIP_CONSDATA **consdata, int nvars, SCIP_VAR **vars, SCIP_VAR **binvars, int *durations, int *demands, int capacity, SCIP_Bool check) |
static SCIP_RETCODE | consdataFree (SCIP *scip, SCIP_CONSDATA **consdata) |
static SCIP_RETCODE | consdataPrint (SCIP *scip, SCIP_CONSDATA *consdata, FILE *file) |
Constraint handler data | |
Method used to create and free the constraint handler data when including and removing the cumulative constraint handler. | |
static SCIP_RETCODE | conshdlrdataCreate (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata, SCIP_EVENTHDLR *eventhdlrbinvars, SCIP_EVENTHDLR *eventhdlrintvars) |
static SCIP_RETCODE | conshdlrdataFree (SCIP *scip, SCIP_CONSHDLRDATA **conshdlrdata) |
Macro Definition Documentation
◆ CONSHDLR_NAME
#define CONSHDLR_NAME "optcumulative" |
Definition at line 69 of file cons_optcumulative.c.
Referenced by SCIP_DECL_CONSCHECK(), SCIP_DECL_CONSDELETE(), SCIP_DECL_CONSENFOLP(), SCIP_DECL_CONSENFOPS(), SCIP_DECL_CONSHDLRCOPY(), SCIP_DECL_CONSINITPRE(), SCIPcreateConsOptcumulative(), SCIPgetHmaxOptcumulative(), SCIPgetHminOptcumulative(), SCIPincludeConshdlrOptcumulative(), SCIPsetHmaxOptcumulative(), and SCIPsetHminOptcumulative().
◆ CONSHDLR_DESC
#define CONSHDLR_DESC "constraint handler for cumulative constraints with optional activities" |
Definition at line 70 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_SEPAPRIORITY
#define CONSHDLR_SEPAPRIORITY 0 |
priority of the constraint handler for separation
Definition at line 71 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_ENFOPRIORITY
#define CONSHDLR_ENFOPRIORITY -2060000 |
priority of the constraint handler for constraint enforcing
Definition at line 72 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_CHECKPRIORITY
#define CONSHDLR_CHECKPRIORITY -3100000 |
priority of the constraint handler for checking feasibility
Definition at line 73 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_SEPAFREQ
#define CONSHDLR_SEPAFREQ 1 |
frequency for separating cuts; zero means to separate only in the root node
Definition at line 74 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_PROPFREQ
#define CONSHDLR_PROPFREQ 1 |
frequency for propagating domains; zero means only preprocessing propagation
Definition at line 75 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_EAGERFREQ
#define CONSHDLR_EAGERFREQ 100 |
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 76 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_MAXPREROUNDS
#define CONSHDLR_MAXPREROUNDS -1 |
maximal number of presolving rounds the constraint handler participates in (-1: no limit)
Definition at line 79 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_DELAYSEPA
#define CONSHDLR_DELAYSEPA FALSE |
should separation method be delayed, if other separators found cuts?
Definition at line 80 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_DELAYPROP
#define CONSHDLR_DELAYPROP FALSE |
should propagation method be delayed, if other propagators found reductions?
Definition at line 81 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_NEEDSCONS
#define CONSHDLR_NEEDSCONS TRUE |
should the constraint handler be skipped, if no constraints are available?
Definition at line 82 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_PROP_TIMING
#define CONSHDLR_PROP_TIMING SCIP_PROPTIMING_BEFORELP |
Definition at line 84 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ CONSHDLR_PRESOLTIMING
#define CONSHDLR_PRESOLTIMING SCIP_PRESOLTIMING_MEDIUM |
Definition at line 85 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ EVENTHDLR_BINVARS_NAME
#define EVENTHDLR_BINVARS_NAME "optcumulativebinvars" |
Definition at line 94 of file cons_optcumulative.c.
Referenced by SCIP_DECL_EVENTEXEC(), and SCIPincludeConshdlrOptcumulative().
◆ EVENTHDLR_BINVARS_DESC
#define EVENTHDLR_BINVARS_DESC "bound change event handler for binary variables of optcumulative constraints" |
Definition at line 95 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ EVENTHDLR_INTVARS_NAME
#define EVENTHDLR_INTVARS_NAME "optcumulativeintvars" |
Definition at line 97 of file cons_optcumulative.c.
Referenced by SCIP_DECL_EVENTEXEC(), and SCIPincludeConshdlrOptcumulative().
◆ EVENTHDLR_INTVARS_DESC
#define EVENTHDLR_INTVARS_DESC "bound change event handler for integer variables of optcumulative constraints" |
Definition at line 98 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ DEFAULT_ROWRELAX
#define DEFAULT_ROWRELAX FALSE |
add linear relaxation as LP row (otherwise a knapsack constraint is created)?
Definition at line 107 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ DEFAULT_CONFLICTANALYSIS
#define DEFAULT_CONFLICTANALYSIS TRUE |
participate in conflict analysis?"
Definition at line 108 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ DEFAULT_INTERVALRELAX
#define DEFAULT_INTERVALRELAX TRUE |
create a relaxation for each start and end time point interval
Definition at line 109 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consInitOptcumulative
#define consInitOptcumulative NULL |
initialization method of constraint handler (called after problem was transformed)
Definition at line 3012 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consExitOptcumulative
#define consExitOptcumulative NULL |
deinitialization method of constraint handler (called before transformed problem is freed)
Definition at line 3016 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consExitpreOptcumulative
#define consExitpreOptcumulative NULL |
presolving deinitialization method of constraint handler (called after presolving has been finished)
Definition at line 3051 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consInitsolOptcumulative
#define consInitsolOptcumulative NULL |
solving process initialization method of constraint handler (called when branch and bound process is about to begin)
Definition at line 3055 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consEnforelaxOptcomulative
#define consEnforelaxOptcomulative NULL |
constraint enforcing method of constraint handler for relaxation solutions
Definition at line 3058 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consSepasolOptcumulative
#define consSepasolOptcumulative NULL |
separation method of constraint handler for arbitrary primal solutions
Definition at line 3226 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consActiveOptcumulative
#define consActiveOptcumulative NULL |
constraint activation notification method of constraint handler
Definition at line 3809 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consDeactiveOptcumulative
#define consDeactiveOptcumulative NULL |
constraint deactivation notification method of constraint handler
Definition at line 3813 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consEnableOptcumulative
#define consEnableOptcumulative NULL |
constraint enabling notification method of constraint handler
Definition at line 3817 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consDisableOptcumulative
#define consDisableOptcumulative NULL |
constraint disabling notification method of constraint handler
Definition at line 3821 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
◆ consDelvarsOptcumulative
#define consDelvarsOptcumulative NULL |
variable deletion method of constraint handler
Definition at line 3824 of file cons_optcumulative.c.
Referenced by SCIPincludeConshdlrOptcumulative().
Function Documentation
◆ checkCounters()
|
static |
check constraint state (nglbfixedones and nglbfixedzeros)
- Parameters
-
consdata optcumulative constraint data
Definition at line 168 of file cons_optcumulative.c.
References convertBoundToInt(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().
Referenced by applyZeroFixings(), catchAllEvents(), consdataDeletePos(), propagateCons(), and upgradeCons().
◆ convertBoundToInt()
converts the given double bound which is integral to an int; in optimized mode the function gets inlined for performance; in debug mode we check some additional conditions
- Parameters
-
scip SCIP data structure bound double bound to convert
Definition at line 219 of file cons_optcumulative.c.
References bound, consdataCreate(), SCIP_Real, SCIPisEQ(), and SCIPisIntegral().
Referenced by addRelaxation(), checkCounters(), checkRedundancy(), collectVars(), computeMaxEnergy(), createSortedEventpoints(), detectImplications(), enfopsCons(), presolveCumulativeCondition(), propagateCons(), removeIrrelevantJobs(), and solveSubproblem().
◆ consdataCreate()
|
static |
creates constraint data of optcumulative constraint
- Parameters
-
scip SCIP data structure consdata pointer to consdata nvars number of variables vars array of integer variables binvars array of variable representing if the job has to be processed on this machine durations array containing corresponding durations demands array containing corresponding demands capacity available cumulative capacity check is the corresponding constraint a check constraint
Definition at line 242 of file cons_optcumulative.c.
References consdataFree(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPallocBlockMemory, SCIPdebugMessage, SCIPduplicateBlockMemoryArray, SCIPgetTransformedVars(), SCIPisTransformed(), and SCIPmarkDoNotMultaggrVar().
Referenced by convertBoundToInt(), SCIP_DECL_CONSTRANS(), and SCIPcreateConsOptcumulative().
◆ consdataFree()
|
static |
frees a optcumulative constraint data
- Parameters
-
scip SCIP data structure consdata pointer to linear constraint data
Definition at line 339 of file cons_optcumulative.c.
References consdataPrint(), NULL, SCIP_CALL, SCIP_OKAY, SCIPfreeBlockMemory, SCIPfreeBlockMemoryArray, SCIPreleaseCons(), and SCIPreleaseRow().
Referenced by consdataCreate(), and SCIP_DECL_CONSDELETE().
◆ consdataPrint()
|
static |
prints optcumulative constraint to file stream
- Parameters
-
scip SCIP data structure consdata optcumulative constraint data file output file (or NULL for standard output)
Definition at line 382 of file cons_optcumulative.c.
References conshdlrdataCreate(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPinfoMessage(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and SCIPwriteVarName().
Referenced by consdataFree(), and SCIP_DECL_CONSPRINT().
◆ conshdlrdataCreate()
|
static |
creates constaint handler data for set partitioning / packing / covering constraint handler
- Parameters
-
scip SCIP data structure conshdlrdata pointer to store the constraint handler data eventhdlrbinvars used event handler for tracing bound changes on binary variables eventhdlrintvars used event handler for tracing bound changes on integer variables
Definition at line 425 of file cons_optcumulative.c.
References conshdlrdataFree(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPallocBlockMemory.
Referenced by consdataPrint(), and SCIPincludeConshdlrOptcumulative().
◆ conshdlrdataFree()
|
static |
frees constraint handler data for set partitioning / packing / covering constraint handler
- Parameters
-
scip SCIP data structure conshdlrdata pointer to the constraint handler data
Definition at line 448 of file cons_optcumulative.c.
References NULL, SCIP_OKAY, SCIPfreeBlockMemory, and unlockRounding().
Referenced by conshdlrdataCreate(), and SCIP_DECL_CONSFREE().
◆ unlockRounding()
|
static |
removes rounding locks for the given variable in the given optcumulative constraint
- Parameters
-
scip SCIP data structure cons optcumulative constraint binvar decision variable var start time variable downlock has the integer start time variable a down lock uplock has the integer start time variable an up lock
Definition at line 465 of file cons_optcumulative.c.
References catchEventBinvar(), FALSE, SCIP_CALL, SCIP_OKAY, SCIPunlockVarCons(), and TRUE.
Referenced by consdataDeletePos(), and conshdlrdataFree().
◆ catchEventBinvar()
|
static |
catches events for binary variable at given position
- Parameters
-
scip SCIP data structure cons set partitioning / packing / covering constraint eventhdlr event handler to call for the event processing pos array position of variable to catch bound change events for
Definition at line 485 of file cons_optcumulative.c.
References dropEventBinvar(), NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDRELAXED, SCIP_EVENTTYPE_BOUNDTIGHTENED, SCIP_EVENTTYPE_GBDCHANGED, SCIP_OKAY, SCIPcatchVarEvent(), SCIPconsGetData(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().
Referenced by catchAllEvents(), and unlockRounding().
◆ dropEventBinvar()
|
static |
drops events for binary variable at given position
- Parameters
-
scip SCIP data structure cons set partitioning / packing / covering constraint eventhdlr event handler to call for the event processing pos array position of variable to catch bound change events for
Definition at line 538 of file cons_optcumulative.c.
References catchEventIntvar(), NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDRELAXED, SCIP_EVENTTYPE_BOUNDTIGHTENED, SCIP_EVENTTYPE_GBDCHANGED, SCIP_OKAY, SCIPconsGetData(), SCIPdropVarEvent(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().
Referenced by catchEventBinvar(), consdataDeletePos(), and dropAllEvents().
◆ catchEventIntvar()
|
static |
catches events for integer variable at given position
- Parameters
-
scip SCIP data structure cons set partitioning / packing / covering constraint eventhdlr event handler to call for the event processing pos array position of variable to catch bound change events for
Definition at line 585 of file cons_optcumulative.c.
References dropEventIntvar(), NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDTIGHTENED, SCIP_EVENTTYPE_GBDCHANGED, SCIP_OKAY, SCIPcatchVarEvent(), and SCIPconsGetData().
Referenced by catchAllEvents(), and dropEventBinvar().
◆ dropEventIntvar()
|
static |
drops events for integer variable at given position
- Parameters
-
scip SCIP data structure cons set partitioning / packing / covering constraint eventhdlr event handler to call for the event processing pos array position of variable to catch bound change events for
Definition at line 620 of file cons_optcumulative.c.
References catchAllEvents(), NULL, SCIP_CALL, SCIP_EVENTTYPE_BOUNDTIGHTENED, SCIP_EVENTTYPE_GBDCHANGED, SCIP_OKAY, SCIPconsGetData(), and SCIPdropVarEvent().
Referenced by catchEventIntvar(), consdataDeletePos(), and dropAllEvents().
◆ catchAllEvents()
|
static |
catches bound change events for all variables in transformed optcumulative constraint
- Parameters
-
scip SCIP data structure cons set partitioning / packing / covering constraint eventhdlrbinvars event handler to call for the event processing on binary variables eventhdlrintvars event handler to call for the event processing on integer variables
Definition at line 650 of file cons_optcumulative.c.
References catchEventBinvar(), catchEventIntvar(), checkCounters(), dropAllEvents(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPconsGetData().
Referenced by dropEventIntvar(), SCIP_DECL_CONSTRANS(), and SCIPcreateConsOptcumulative().
◆ dropAllEvents()
|
static |
drops bound change events for all variables in transformed optcumulative constraint
- Parameters
-
scip SCIP data structure cons set partitioning / packing / covering constraint eventhdlrbinvars event handler to call for the event processing on binary variables eventhdlrintvars event handler to call for the event processing on integer variables
Definition at line 683 of file cons_optcumulative.c.
References createSortedEventpoints(), dropEventBinvar(), dropEventIntvar(), NULL, SCIP_CALL, SCIP_OKAY, and SCIPconsGetData().
Referenced by catchAllEvents(), and SCIP_DECL_CONSDELETE().
◆ createSortedEventpoints()
|
static |
initialize the sorted event point arrays
- Parameters
-
scip SCIP data structure consdata constraint data starttimes array to store sorted start events endtimes array to store sorted end events startindices permutation with rspect to the start times endindices permutation with rspect to the end times local shall local bounds be used
Definition at line 715 of file cons_optcumulative.c.
References computeMaxEnergy(), convertBoundToInt(), SCIP_Longint, SCIPsortIntInt(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().
Referenced by addRelaxation(), and dropAllEvents().
◆ computeMaxEnergy()
|
static |
computes the maximum energy for all variables which correspond to jobs which start between the given start time and end time
- Returns
- Maximum energy for the given time window
- Parameters
-
scip SCIP data structure consdata optcumulative constraint data starttime start time endtime end time
Definition at line 761 of file cons_optcumulative.c.
References collectVars(), convertBoundToInt(), SCIP_Longint, SCIPvarGetLbGlobal(), and SCIPvarGetUbGlobal().
Referenced by addRelaxation(), and createSortedEventpoints().
◆ collectVars()
|
static |
collects all variables which correspond to jobs which start between the given start time and end time
- Parameters
-
scip SCIP data structure consdata optcumulative constraint data vars array to store the variables weights array to store the weights nvars pointer to store the number of collected variables starttime start time endtime end time
Definition at line 792 of file cons_optcumulative.c.
References convertBoundToInt(), removeRedundantRows(), SCIP_Longint, SCIP_OKAY, SCIPvarGetLbGlobal(), and SCIPvarGetUbGlobal().
Referenced by addRelaxation(), and computeMaxEnergy().
◆ removeRedundantRows()
|
static |
remove row which have a tightness which is smaller or equal to the given one
- Returns
- The number of remaining rows
- Parameters
-
rowtightness array containing the tightness for the previously selected rows startidxs array containing for each row the index for the start event nrows current number of rows tightness tightness to use to detect redundant rows
Definition at line 830 of file cons_optcumulative.c.
References createRow().
Referenced by addRelaxation(), and collectVars().
◆ createRow()
|
static |
depending on the parameters setting a row or an knapsack constraint is created
- Parameters
-
scip SCIP data structure conshdlr constraint handler name name of the row vars array of variable representing if the job has to be processed on this machine weights start time variables of the activities which are assigned nvars number of variables capacity available cumulative capacity local create local row rowadded pointer to store if a row was added consadded pointer to store if a constraint was added cutoff pointer to store whether a cutoff occurred
Definition at line 857 of file cons_optcumulative.c.
References addRelaxation(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPaddRow(), SCIPaddVarToRow(), SCIPcacheRowExtensions(), SCIPconshdlrGetData(), SCIPcreateConsKnapsack(), SCIPcreateEmptyRowConshdlr(), SCIPdebug, SCIPflushRowExtensions(), SCIPgetDepth(), SCIPinfinity(), SCIPisCutEfficacious(), SCIPprintCons(), SCIPprintRow(), SCIPreleaseCons(), SCIPreleaseRow(), SCIProwIsInLP(), and TRUE.
Referenced by addRelaxation(), enfopsCons(), and removeRedundantRows().
◆ addRelaxation()
|
static |
adds linear relaxation as cut to the LP
- Parameters
-
scip SCIP data structure conshdlr constraint handler conshdlrdata constraint handler data structure cons optcumulative constraint rowadded pointer to store if a row was added consadded pointer to store if a constraint was added cutoff pointer to store whether a cutoff occurred
Definition at line 928 of file cons_optcumulative.c.
References BMSclearMemoryArray, collectActivities(), collectVars(), computeMaxEnergy(), convertBoundToInt(), createRow(), createSortedEventpoints(), FALSE, MAX, NULL, removeRedundantRows(), SCIP_CALL, SCIP_Longint, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPrestartSolve(), SCIPsnprintf(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by createRow(), SCIP_DECL_CONSINITLP(), and SCIP_DECL_CONSSEPALP().
◆ collectActivities()
|
static |
collect all activities which are locally (that means in the current branch and bound node) assigned to that machine
- Parameters
-
consdata constraint data binvars array of variable representing if the job has to be processed on this machine vars start time variables of the activities which are assigned durations durations of the activities demands demands of the activities nfixedones pointer to store number of activities assigned to that machine nfixedzeros pointer to store number of binary variables fixed to zeor auxiliary pointer to store if the integer start time variables of the assigned activities are auxiliary variables; that is the case if the optcumulative choice constraints is the only one having locks on these variables
Definition at line 1155 of file cons_optcumulative.c.
References collectSolActivities(), FALSE, SCIPdebugMessage, SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIPvarGetUbGlobal(), SCIPvarGetUbLocal(), and TRUE.
Referenced by addRelaxation(), propagateCons(), and upgradeCons().
◆ collectSolActivities()
|
static |
collect all activities which are assigned to that machine in the given solution
- Parameters
-
scip SCIP data structure consdata constraint data sol primal solution, or NULL for current LP/pseudo solution binvars array of variable representing if the job has to be processed on this machine vars start time variables of the activities which are assigned durations durations of the activities demands demands of the activities nvars pointer to store number of activities assigned to that machine nfixedones pointer to store number of binary variables locally fixed to one nfixedzeros pointer to store number of binary variables locally fixed to zero auxiliary pointer to store if the integer start time variables of the assigned activities are auxiliary variables; that is the case if the machine choice constraints is the only one haveing locks on these variables
Definition at line 1210 of file cons_optcumulative.c.
References FALSE, SCIPdebugMessage, SCIPgetSolVal(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIPvarGetUbLocal(), solveCumulative(), and TRUE.
Referenced by checkCons(), collectActivities(), and enfopsCons().
◆ solveCumulative()
|
static |
solves given cumulative condition as independent sub problem
- Note
- The time and memory limit of the SCIP environment in transferred to sub solver
- If the problem was solved to the earliest start times (ests) and latest start times (lsts) array contain the solution values; If the problem was not solved these two arrays contain the global bounds at the time the sub solver was interrupted.
- Parameters
-
scip SCIP data structure nvars number of start time variables (activities) vars start time variables durations array of durations demands array of demands capacity cumulative capacity hmin left bound of time axis to be considered (including hmin) hmax right bound of time axis to be considered (not including hmax) local use local bounds, otherwise global ests array to store the earlier start time for each job lsts array to store the latest start time for each job maxnodes maximum number of branch-and-bound nodes to solve the single cumulative constraint (-1: no limit) solved pointer to store if the problem is solved (to optimality) infeasible pointer to store if the problem is infeasible unbounded pointer to store if the problem is unbounded error pointer to store if an error occurred
Definition at line 1268 of file cons_optcumulative.c.
References createConflictCons(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPfreeBufferArray, SCIPgetMemExternEstim(), SCIPgetMemUsed(), SCIPgetRealParam(), SCIPgetSolvingTime(), SCIPisInfinity(), SCIPsolveCumulative(), SCIPvarGetLbGlobal(), SCIPvarGetLbLocal(), SCIPvarGetObj(), SCIPvarGetUbGlobal(), and SCIPvarGetUbLocal().
Referenced by checkRedundancy(), collectSolActivities(), enfopsCons(), SCIPsetSolveCumulative(), and solveSubproblem().
◆ createConflictCons()
|
static |
create a logicor constraint which ensures that the jobs related to binary variables are not assigned in the same time to this optional cumulative constraint
- Parameters
-
scip SCIP data structure name name of conflict constraint binvars array of binary variables nvars number of variables
Definition at line 1342 of file cons_optcumulative.c.
References checkRedundancy(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddCoefLogicor(), SCIPaddCons(), SCIPcreateConsLogicor(), SCIPgetNegatedVar(), SCIPreleaseCons(), SCIPvarGetLbGlobal(), and TRUE.
Referenced by checkRedundancy(), enfopsCons(), and solveCumulative().
◆ checkRedundancy()
|
static |
check of the given constraint is redundant
- Parameters
-
scip SCIP data structure cons optcumulative constraint which collapsed to a cumulative constraint locally ndelconss pointer to store the number of deleted constraints redundant pointer to store if the constraint is redundant
Definition at line 1376 of file cons_optcumulative.c.
References convertBoundToInt(), createConflictCons(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_ERROR, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPchgVarLbGlobal(), SCIPchgVarUbGlobal(), SCIPconsGetData(), SCIPconsGetName(), SCIPdelConsLocal(), SCIPfreeBufferArray, SCIPinProbing(), SCIPsortRealPtrPtrIntInt(), SCIPvarGetLbGlobal(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIPvarGetUbGlobal(), solveCumulative(), solveSubproblem(), and TRUE.
Referenced by createConflictCons(), and SCIP_DECL_CONSPROP().
◆ solveSubproblem()
|
static |
solve the cumulative sub problem
- Parameters
-
scip SCIP data structure cons optcumulative constraint which collapsed to a cumulative constraint locally conflictanalysis should conflict analysis be called for infeasible subproblems consdata constraint data binvars array of variable representing if the job has to be processed on this machine vars start time variables of the activities which are assigned durations durations of the activities demands demands of the activities nvars number of activities assigned to that machine nfixedvars pointer to store the numbver of fixed variables nchgbds pointer to store the number of changed bounds ndelconss pointer to store the number of deleted constraints cutoff pointer to store if the constraint is violated
Definition at line 1523 of file cons_optcumulative.c.
References checkCons(), convertBoundToInt(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CONFTYPE_PROPAGATION, SCIP_ERROR, SCIP_OKAY, SCIP_Real, SCIPaddConflictBinvar(), SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPallocBufferArray, SCIPanalyzeConflictCons(), SCIPdelConsLocal(), SCIPfixVar(), SCIPfreeBufferArray, SCIPinitConflictAnalysis(), SCIPinProbing(), SCIPsortRealPtrPtrIntInt(), SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPvarGetLbLocal(), SCIPvarGetUbLocal(), solveCumulative(), and TRUE.
Referenced by checkRedundancy(), and propagateCons().
◆ checkCons()
|
static |
check if the given constrait is valid; checks each starting point of a job whether the remaining capacity is at least zero or not. If not (*violated) is set to TRUE
- Parameters
-
scip SCIP data structure cons constraint to be checked sol primal solution, or NULL for current LP/pseudo solution violated pointer to store if the constraint is violated printreason should the reason for the violation be printed?
Definition at line 1684 of file cons_optcumulative.c.
References collectSolActivities(), enfopsCons(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPcheckCumulativeCondition(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, and SCIPfreeBufferArray.
Referenced by SCIP_DECL_CONSCHECK(), and solveSubproblem().
◆ enfopsCons()
|
static |
check if the given constrait is valid; checks each starting point of a job whether the remaining capacity is at least zero or not. If not (*violated) is set to TRUE
- Parameters
-
scip SCIP data structure cons constraint to be checked trysol primal solution to construct, or NULL violated pointer to store if the constraint is violated/infeasible consadded pointer to store if a constraint was added solfeasible pointer to store if the constraint solution is potentially feasible
Definition at line 1739 of file cons_optcumulative.c.
References collectSolActivities(), convertBoundToInt(), createConflictCons(), createRow(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcheckCumulativeCondition(), SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPincConsAge(), SCIPisStopped(), SCIPresetConsAge(), SCIPsetSolVal(), SCIPsortRealPtrPtrIntInt(), SCIPvarGetLbGlobal(), SCIPvarGetUbGlobal(), solveCumulative(), TRUE, and upgradeCons().
Referenced by checkCons(), SCIP_DECL_CONSENFOLP(), and SCIP_DECL_CONSENFOPS().
◆ upgradeCons()
|
static |
upgrade constraints to an cumulative constraint
- Parameters
-
scip SCIP data structure cons constraint to be checked ndelconss pointer to store the number of deleted constraints nupgdconss pointer to store the number of upgrade constraints mustpropagate pointer to store if the constraints has to be propagated
Definition at line 1943 of file cons_optcumulative.c.
References checkCounters(), collectActivities(), FALSE, fixIntegerVariable(), NULL, SCIP_Bool, SCIP_CALL, SCIP_MAXSTRLEN, SCIP_OKAY, SCIPaddCons(), SCIPaddConsLocal(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDeleted(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsCumulative(), SCIPdebugMessage, SCIPdelCons(), SCIPdelConsLocal(), SCIPfixVar(), SCIPfreeBufferArray, SCIPreleaseCons(), SCIPsetHmaxCumulative(), SCIPsetHminCumulative(), SCIPsnprintf(), and TRUE.
Referenced by enfopsCons(), SCIP_DECL_CONSPRESOL(), and SCIP_DECL_CONSPROP().
◆ fixIntegerVariable()
|
static |
since the binary variable is fixed to zero, depending in the objective coefficient of the integer variable and the rounding locks, we might can fix the integer variable
- Parameters
-
scip SCIP data structure var integer variable to fix downlock does the variable has down lock given by the optcumulative constraint uplock does the variable has up lock given by the optcumulative constraint nchgbds pointer to store the number changed variable bounds
Definition at line 2067 of file cons_optcumulative.c.
References consdataDeletePos(), SCIP_Bool, SCIP_CALL, SCIP_INVALID, SCIP_OKAY, SCIP_Real, SCIPfixVar(), SCIPinProbing(), SCIPinRepropagation(), SCIPisNegative(), SCIPisPositive(), SCIPisZero(), SCIPvarGetLbLocal(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIPvarGetObj(), and SCIPvarGetUbLocal().
Referenced by applyZeroFixings(), propagateCons(), and upgradeCons().
◆ consdataDeletePos()
|
static |
deletes coefficient at given position from constraint data
- Parameters
-
scip SCIP data structure consdata cumulative constraint data cons knapsack constraint pos position of coefficient to delete
Definition at line 2140 of file cons_optcumulative.c.
References applyZeroFixings(), checkCounters(), dropEventBinvar(), dropEventIntvar(), FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPconsGetHdlr(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsTransformed(), SCIPdebugMessage, SCIPvarGetName(), and unlockRounding().
Referenced by applyZeroFixings(), detectImplications(), fixIntegerVariable(), presolveCumulativeCondition(), and removeIrrelevantJobs().
◆ applyZeroFixings()
|
static |
remove all jobs for which the binary variable is globally fixed to zero
- Parameters
-
scip SCIP data structure cons constraint to be checked nchgcoefs pointer to store the number changed coefficients nchgbds pointer to store the number changed variable bounds
Definition at line 2200 of file cons_optcumulative.c.
References checkCounters(), consdataDeletePos(), fixIntegerVariable(), NULL, removeIrrelevantJobs(), SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsIsChecked(), SCIPdebugMessage, SCIPvarGetName(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by consdataDeletePos(), SCIP_DECL_CONSPRESOL(), and SCIP_DECL_CONSPROP().
◆ removeIrrelevantJobs()
|
static |
remove jobs which have a duration or demand of zero (zero energy) or lay outside the efficient horizon [hmin, hmax); this is done in the SCIP_DECL_CONSINITPRE() callback
- Parameters
-
scip SCIP data structure cons constraint to propagate
Definition at line 2248 of file cons_optcumulative.c.
References consdataDeletePos(), convertBoundToInt(), NULL, presolveCumulativeCondition(), SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPvarGetLbGlobal(), SCIPvarGetName(), and SCIPvarGetUbGlobal().
Referenced by applyZeroFixings(), and SCIP_DECL_CONSINITPRE().
◆ presolveCumulativeCondition()
|
static |
presolve cumulative condition w.r.t. effective horizon by detecting irrelevant variables
- Parameters
-
scip SCIP data structure cons constraint to be checked nfixedvars pointer to store the number of fixed variables nchgcoefs pointer to store the number of changed coefficients nchgsides pointer to store the number of changed sides cutoff buffer to store whether a cutoff is detected
Definition at line 2309 of file cons_optcumulative.c.
References BMSclearMemoryArray, consdataDeletePos(), convertBoundToInt(), createSetPackingCons(), NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPfixVar(), SCIPfreeBufferArray, SCIPpresolveCumulativeCondition(), SCIPvarGetLbGlobal(), and SCIPvarGetUbGlobal().
Referenced by removeIrrelevantJobs(), and SCIP_DECL_CONSPRESOL().
◆ createSetPackingCons()
|
static |
create an an set partitioning constraint
- Parameters
-
scip SCIP data structure var1 first variable var2 second variable
Definition at line 2394 of file cons_optcumulative.c.
References createVarboundCons(), NULL, SCIP_CALL, SCIP_OKAY, SCIPaddCoefSetppc(), SCIPaddCons(), SCIPcreateConsBasicSetpack(), SCIPdebugPrintCons, and SCIPreleaseCons().
Referenced by detectImplications(), and presolveCumulativeCondition().
◆ createVarboundCons()
|
static |
create variable bound constraint
- Parameters
-
scip SCIP data structure binvar binary variable x intvar integer variable y bound variable bound lower variable lower bound? (Otherwise upper bound)
Definition at line 2415 of file cons_optcumulative.c.
References bound, createBounddisjunctionCons(), NULL, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPcreateConsBasicVarbound(), SCIPdebugPrintCons, SCIPinfinity(), SCIPreleaseCons(), SCIPvarGetLbGlobal(), and SCIPvarGetUbGlobal().
Referenced by createSetPackingCons(), and detectImplications().
◆ createBounddisjunctionCons()
|
static |
create bound disjunction constraint
- Parameters
-
scip SCIP data structure binvar binary variable x intvar integer variable y lb lower bound ub lower bound
Definition at line 2453 of file cons_optcumulative.c.
References detectImplications(), NULL, SCIP_BOUNDTYPE_LOWER, SCIP_BOUNDTYPE_UPPER, SCIP_CALL, SCIP_OKAY, SCIP_Real, SCIPaddCons(), SCIPallocBufferArray, SCIPcreateConsBasicBounddisjunction(), SCIPdebugPrintCons, SCIPfreeBufferArray, and SCIPreleaseCons().
Referenced by createVarboundCons(), and detectImplications().
◆ detectImplications()
|
static |
detect implication
- Parameters
-
scip SCIP data structure cons optcumulative constraint nchgcoefs pointer to store the number of changed coefficients naddconss pointer to store the number of added constraints
Definition at line 2499 of file cons_optcumulative.c.
References consdataDeletePos(), convertBoundToInt(), createBounddisjunctionCons(), createSetPackingCons(), createVarboundCons(), FALSE, NULL, propagateCons(), SCIP_CALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetName(), SCIPdebugMessage, SCIPvarGetLbGlobal(), SCIPvarGetName(), SCIPvarGetUbGlobal(), and TRUE.
Referenced by createBounddisjunctionCons(), and SCIP_DECL_CONSPRESOL().
◆ propagateCons()
|
static |
propgates given constraint
- Parameters
-
scip SCIP data structure cons constraint to be checked conflictanalysis should conflict analysis be called for infeasible subproblems nfixedvars pointer to store the number of fixed variables nchgbds pointer to store the number changed variable bounds ndelconss pointer to store the number of deleted constraints cutoff pointer to store if a cutoff (infeasibility) was detected
Definition at line 2711 of file cons_optcumulative.c.
References BMSclearMemoryArray, SCIP_Profile::capacity, checkCounters(), collectActivities(), convertBoundToInt(), FALSE, fixIntegerVariable(), NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSHDLRCOPY(), SCIP_OKAY, SCIP_PRESOLTIMING_ALWAYS, SCIP_Real, SCIPaddConflictBinvar(), SCIPallocBufferArray, SCIPanalyzeConflictCons(), SCIPcomputeHmin(), SCIPconsGetData(), SCIPconsIsChecked(), SCIPcreateWorstCaseProfile(), SCIPdebugMessage, SCIPendProbing(), SCIPfixVarProbing(), SCIPfreeBufferArray, SCIPinProbing(), SCIPinRepropagation(), SCIPisStopped(), SCIPnewProbingNode(), SCIPprofileCreate(), SCIPprofileDeleteCore(), SCIPprofileFree(), SCIPprofileInsertCore(), SCIPpropagateProbing(), SCIPpropCumulativeCondition(), SCIPstartProbing(), SCIPtightenVarLb(), SCIPtightenVarUb(), SCIPvarGetLbLocal(), SCIPvarGetName(), SCIPvarGetNLocksDown(), SCIPvarGetNLocksUp(), SCIPvarGetUbLocal(), solveSubproblem(), and TRUE.
Referenced by detectImplications(), SCIP_DECL_CONSPRESOL(), and SCIP_DECL_CONSPROP().
◆ SCIP_DECL_CONSHDLRCOPY()
|
static |
copy method for constraint handler plugins (called when SCIP copies plugins)
Definition at line 2980 of file cons_optcumulative.c.
References CONSHDLR_NAME, NULL, SCIP_CALL, SCIP_DECL_CONSFREE(), SCIP_OKAY, SCIPconshdlrGetName(), SCIPincludeConshdlrOptcumulative(), and TRUE.
Referenced by propagateCons().
◆ SCIP_DECL_CONSFREE()
|
static |
destructor of constraint handler to free constraint handler data (called when SCIP is exiting)
Definition at line 2996 of file cons_optcumulative.c.
References conshdlrdataFree(), NULL, SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetData(), and SCIPconshdlrSetData().
Referenced by SCIP_DECL_CONSHDLRCOPY().
◆ SCIP_DECL_CONSINITPRE()
|
static |
presolving initialization method of constraint handler (called when presolving is about to begin)
Definition at line 3021 of file cons_optcumulative.c.
References CONSHDLR_NAME, NULL, removeIrrelevantJobs(), SCIP_CALL, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPfindHeur().
◆ SCIP_DECL_CONSEXITSOL()
|
static |
solving process deinitialization method of constraint handler (called before branch and bound process data is freed)
Definition at line 3062 of file cons_optcumulative.c.
References NULL, SCIP_CALL, SCIP_DECL_CONSDELETE(), SCIP_OKAY, SCIPconsGetData(), and SCIPreleaseRow().
◆ SCIP_DECL_CONSDELETE()
|
static |
frees specific constraint data
Definition at line 3088 of file cons_optcumulative.c.
References consdataFree(), CONSHDLR_NAME, dropAllEvents(), NULL, SCIP_CALL, SCIP_DECL_CONSTRANS(), SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), and SCIPvarIsTransformed().
Referenced by SCIP_DECL_CONSEXITSOL().
◆ SCIP_DECL_CONSTRANS()
|
static |
transforms constraint data into data belonging to the transformed problem
Definition at line 3117 of file cons_optcumulative.c.
References catchAllEvents(), consdataCreate(), NULL, SCIP_CALL, SCIP_DECL_CONSINITLP(), SCIP_OKAY, SCIP_STAGE_TRANSFORMING, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateCons(), SCIPdebugMessage, and SCIPgetStage().
Referenced by SCIP_DECL_CONSDELETE().
◆ SCIP_DECL_CONSINITLP()
|
static |
LP initialization method of constraint handler
Definition at line 3165 of file cons_optcumulative.c.
References addRelaxation(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSSEPALP(), SCIP_OKAY, SCIPconshdlrGetData(), and SCIPconsIsInitial().
Referenced by SCIP_DECL_CONSTRANS().
◆ SCIP_DECL_CONSSEPALP()
|
static |
separation method of constraint handler for LP solutions
Definition at line 3192 of file cons_optcumulative.c.
References addRelaxation(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CONSADDED, SCIP_CUTOFF, SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SEPARATED, and SCIPconshdlrGetData().
Referenced by SCIP_DECL_CONSINITLP().
◆ SCIP_DECL_CONSENFOLP()
|
static |
constraint enforcing method of constraint handler for LP solutions
Definition at line 3231 of file cons_optcumulative.c.
References CONSHDLR_NAME, enfopsCons(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CONSADDED, SCIP_DECL_CONSENFOPS(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPcreateCurrentSol(), SCIPdebugMessage, SCIPfreeSol(), SCIPheurPassSolTrySol(), SCIPprintSol(), and TRUE.
◆ SCIP_DECL_CONSENFOPS()
|
static |
constraint enforcing method of constraint handler for pseudo solutions
Definition at line 3302 of file cons_optcumulative.c.
References CONSHDLR_NAME, enfopsCons(), FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_CONSADDED, SCIP_DECL_CONSCHECK(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, SCIPconshdlrGetData(), SCIPconshdlrGetName(), SCIPcreateCurrentSol(), SCIPdebugMessage, SCIPfreeSol(), SCIPheurPassSolTrySol(), and TRUE.
Referenced by SCIP_DECL_CONSENFOLP().
◆ SCIP_DECL_CONSCHECK()
|
static |
feasibility check method of constraint handler for integral solutions
Definition at line 3358 of file cons_optcumulative.c.
References checkCons(), CONSHDLR_NAME, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSPROP(), SCIP_FEASIBLE, SCIP_INFEASIBLE, SCIP_OKAY, and SCIPconshdlrGetName().
Referenced by SCIP_DECL_CONSENFOPS().
◆ SCIP_DECL_CONSPROP()
|
static |
domain propagation method of constraint handler
Definition at line 3386 of file cons_optcumulative.c.
References applyZeroFixings(), checkRedundancy(), FALSE, NULL, propagateCons(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSPRESOL(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_REDUCEDDOM, SCIPconshdlrGetData(), SCIPconsIsDeleted(), SCIPdebugMessage, SCIPincConsAge(), SCIPinProbing(), SCIPresetConsAge(), TRUE, and upgradeCons().
Referenced by SCIP_DECL_CONSCHECK().
◆ SCIP_DECL_CONSPRESOL()
|
static |
presolving method of constraint handler
Definition at line 3485 of file cons_optcumulative.c.
References applyZeroFixings(), detectImplications(), FALSE, NULL, presolveCumulativeCondition(), propagateCons(), SCIP_Bool, SCIP_CALL, SCIP_CUTOFF, SCIP_DECL_CONSRESPROP(), SCIP_DIDNOTFIND, SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_SUCCESS, SCIPaddCons(), SCIPconsGetData(), SCIPconsGetName(), SCIPconsIsChecked(), SCIPconsIsDynamic(), SCIPconsIsEnforced(), SCIPconsIsInitial(), SCIPconsIsLocal(), SCIPconsIsModifiable(), SCIPconsIsPropagated(), SCIPconsIsRemovable(), SCIPconsIsSeparated(), SCIPconsIsStickingAtNode(), SCIPcreateConsOptcumulative(), SCIPdebugMessage, SCIPdelCons(), SCIPinProbing(), SCIPnormalizeCumulativeCondition(), SCIPreleaseCons(), SCIPsnprintf(), SCIPsplitCumulativeCondition(), TRUE, and upgradeCons().
Referenced by SCIP_DECL_CONSPROP().
◆ SCIP_DECL_CONSRESPROP()
|
static |
propagation conflict resolving method of constraint handler
Definition at line 3655 of file cons_optcumulative.c.
References BMSclearMemoryArray, FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSLOCK(), SCIP_DIDNOTFIND, SCIP_OKAY, SCIP_SUCCESS, SCIPaddConflictBinvar(), SCIPaddConflictLb(), SCIPaddConflictUb(), SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPconshdlrGetData(), SCIPdebugMessage, SCIPfreeBufferArray, SCIPrespropCumulativeCondition(), SCIPvarGetLbAtIndex(), and TRUE.
Referenced by SCIP_DECL_CONSPRESOL().
◆ SCIP_DECL_CONSLOCK()
|
static |
variable rounding lock method of constraint handler
Definition at line 3767 of file cons_optcumulative.c.
References NULL, SCIP_CALL, SCIP_LOCKTYPE_MODEL, SCIP_OKAY, SCIPaddVarLocksType(), and SCIPconsGetData().
Referenced by SCIP_DECL_CONSRESPROP().
◆ SCIP_DECL_CONSPRINT()
|
static |
constraint display method of constraint handler
Definition at line 3828 of file cons_optcumulative.c.
References consdataPrint(), NULL, SCIP_CALL, SCIP_DECL_CONSCOPY(), SCIP_OKAY, and SCIPconsGetData().
◆ SCIP_DECL_CONSCOPY()
|
static |
constraint copying method of constraint handler
Definition at line 3841 of file cons_optcumulative.c.
References FALSE, NULL, SCIP_Bool, SCIP_CALL, SCIP_DECL_CONSPARSE(), SCIP_OKAY, SCIPallocBufferArray, SCIPconsGetData(), SCIPconsGetName(), SCIPcreateConsOptcumulative(), SCIPfreeBufferArray, SCIPgetVarCopy(), and TRUE.
Referenced by SCIP_DECL_CONSPRINT().
◆ SCIP_DECL_CONSPARSE()
|
static |
constraint parsing method of constraint handler
Definition at line 3904 of file cons_optcumulative.c.
References NULL, SCIP_CALL, SCIP_DECL_EVENTEXEC(), SCIP_MAXSTRLEN, SCIP_OKAY, SCIP_Real, SCIPallocBufferArray, SCIPcreateConsOptcumulative(), SCIPdebugMsg, SCIPfreeBufferArray, SCIPparseVarName(), SCIPsetHmaxOptcumulative(), SCIPsetHminOptcumulative(), SCIPstrCopySection(), SCIPstrToRealValue(), SCIPvarGetName(), and TRUE.
Referenced by SCIP_DECL_CONSCOPY().
◆ SCIP_DECL_EVENTEXEC() [1/2]
|
static |
Definition at line 4013 of file cons_optcumulative.c.
References EVENTHDLR_BINVARS_NAME, FALSE, NULL, SCIP_EVENTTYPE_GLBCHANGED, SCIP_EVENTTYPE_GUBCHANGED, SCIP_EVENTTYPE_LBRELAXED, SCIP_EVENTTYPE_LBTIGHTENED, SCIP_EVENTTYPE_UBRELAXED, SCIP_EVENTTYPE_UBTIGHTENED, SCIP_INVALIDDATA, SCIP_OKAY, SCIPerrorMessage, SCIPeventGetType(), SCIPeventhdlrGetName(), and SCIPinProbing().
Referenced by SCIP_DECL_CONSPARSE().
◆ SCIP_DECL_EVENTEXEC() [2/2]
|
static |
Definition at line 4062 of file cons_optcumulative.c.
References EVENTHDLR_INTVARS_NAME, FALSE, NULL, SCIP_OKAY, SCIPeventhdlrGetName(), SCIPincludeConshdlrOptcumulative(), and SCIPinProbing().
◆ SCIPincludeConshdlrOptcumulative()
SCIP_RETCODE SCIPincludeConshdlrOptcumulative | ( | SCIP * | scip | ) |
creates the handler for optcumulative constraints and includes it in SCIP
- Parameters
-
scip SCIP data structure
Definition at line 4092 of file cons_optcumulative.c.
References consActiveOptcumulative, consDeactiveOptcumulative, consDelvarsOptcumulative, consDisableOptcumulative, consEnableOptcumulative, consEnforelaxOptcomulative, consExitOptcumulative, consExitpreOptcumulative, CONSHDLR_CHECKPRIORITY, CONSHDLR_DELAYPROP, CONSHDLR_DELAYSEPA, CONSHDLR_DESC, CONSHDLR_EAGERFREQ, CONSHDLR_ENFOPRIORITY, CONSHDLR_MAXPREROUNDS, CONSHDLR_NAME, CONSHDLR_NEEDSCONS, CONSHDLR_PRESOLTIMING, CONSHDLR_PROP_TIMING, CONSHDLR_PROPFREQ, CONSHDLR_SEPAFREQ, CONSHDLR_SEPAPRIORITY, conshdlrdataCreate(), consInitOptcumulative, consInitsolOptcumulative, consSepasolOptcumulative, DEFAULT_CONFLICTANALYSIS, DEFAULT_INTERVALRELAX, DEFAULT_ROWRELAX, EVENTHDLR_BINVARS_DESC, EVENTHDLR_BINVARS_NAME, EVENTHDLR_INTVARS_DESC, EVENTHDLR_INTVARS_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIPaddBoolParam(), SCIPcreateConsOptcumulative(), SCIPincludeConshdlr(), and SCIPincludeEventhdlrBasic().
Referenced by runShell(), SCIP_DECL_CONSHDLRCOPY(), and SCIP_DECL_EVENTEXEC().
◆ SCIPcreateConsOptcumulative()
SCIP_RETCODE SCIPcreateConsOptcumulative | ( | SCIP * | scip, |
SCIP_CONS ** | cons, | ||
const char * | name, | ||
int | nvars, | ||
SCIP_VAR ** | vars, | ||
SCIP_VAR ** | binvars, | ||
int * | durations, | ||
int * | demands, | ||
int | capacity, | ||
SCIP_Bool | initial, | ||
SCIP_Bool | separate, | ||
SCIP_Bool | enforce, | ||
SCIP_Bool | check, | ||
SCIP_Bool | propagate, | ||
SCIP_Bool | local, | ||
SCIP_Bool | modifiable, | ||
SCIP_Bool | dynamic, | ||
SCIP_Bool | removable, | ||
SCIP_Bool | stickingatnode | ||
) |
creates and captures a optcumulative constraint
- Parameters
-
scip SCIP data structure cons pointer to hold the created constraint name name of constraint nvars number of variables (jobs) vars array of integer variable which corresponds to starting times for a job binvars array of variable representing if the job has to be processed on this machine durations array containing corresponding durations demands array containing corresponding demands capacity available cumulative capacity initial should the LP relaxation of constraint be in the initial LP? Usually set to TRUE. Set to FALSE for 'lazy constraints'. separate should the constraint be separated during LP processing? Usually set to TRUE. enforce should the constraint be enforced during node processing? TRUE for model constraints, FALSE for additional, redundant constraints. check should the constraint be checked for feasibility? TRUE for model constraints, FALSE for additional, redundant constraints. propagate should the constraint be propagated during node processing? Usually set to TRUE. local is constraint only valid locally? Usually set to FALSE. Has to be set to TRUE, e.g., for branching constraints. modifiable is constraint modifiable (subject to column generation)? Usually set to FALSE. In column generation applications, set to TRUE if pricing adds coefficients to this constraint. dynamic is constraint subject to aging? Usually set to FALSE. Set to TRUE for own cuts which are seperated as constraints. removable should the relaxation be removed from the LP due to aging or cleanup? Usually set to FALSE. Set to TRUE for 'lazy constraints' and 'user cuts'. stickingatnode should the constraint always be kept at the node where it was added, even if it may be moved to a more global node? Usually set to FALSE. Set to TRUE to for constraints that represent node data.
Definition at line 4149 of file cons_optcumulative.c.
References catchAllEvents(), consdataCreate(), CONSHDLR_NAME, FALSE, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PLUGINNOTFOUND, SCIP_STAGE_PROBLEM, SCIPconshdlrGetData(), SCIPcreateCons(), SCIPerrorMessage, SCIPfindConshdlr(), SCIPgetStage(), and SCIPsetHminOptcumulative().
Referenced by createCipFormulation(), createMipCpFormulation(), SCIP_DECL_CONSCOPY(), SCIP_DECL_CONSPARSE(), SCIP_DECL_CONSPRESOL(), and SCIPincludeConshdlrOptcumulative().
◆ SCIPsetHminOptcumulative()
SCIP_RETCODE SCIPsetHminOptcumulative | ( | SCIP * | scip, |
SCIP_CONS * | cons, | ||
int | hmin | ||
) |
set the left bound of the time axis to be considered (including hmin)
- Parameters
-
scip SCIP data structure cons constraint data hmin left bound of time axis to be considered
Definition at line 4228 of file cons_optcumulative.c.
References CONSHDLR_NAME, NULL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetHminOptcumulative().
Referenced by SCIP_DECL_CONSPARSE(), and SCIPcreateConsOptcumulative().
◆ SCIPgetHminOptcumulative()
returns the left bound of the time axis to be considered
- Parameters
-
scip SCIP data structure cons constraint
Definition at line 4252 of file cons_optcumulative.c.
References CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPsetHmaxOptcumulative().
Referenced by SCIPsetHminOptcumulative().
◆ SCIPsetHmaxOptcumulative()
SCIP_RETCODE SCIPsetHmaxOptcumulative | ( | SCIP * | scip, |
SCIP_CONS * | cons, | ||
int | hmax | ||
) |
set the right bound of the time axis to be considered (not including hmax)
- Parameters
-
scip SCIP data structure cons constraint data hmax right bound of time axis to be considered
Definition at line 4272 of file cons_optcumulative.c.
References CONSHDLR_NAME, NULL, SCIP_INVALIDCALL, SCIP_OKAY, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), SCIPerrorMessage, and SCIPgetHmaxOptcumulative().
Referenced by SCIP_DECL_CONSPARSE(), and SCIPgetHminOptcumulative().
◆ SCIPgetHmaxOptcumulative()
returns the right bound of the time axis to be considered
- Parameters
-
scip SCIP data structure cons constraint
Definition at line 4295 of file cons_optcumulative.c.
References CONSHDLR_NAME, NULL, SCIPABORT, SCIPconsGetData(), SCIPconsGetHdlr(), SCIPconshdlrGetName(), and SCIPerrorMessage.
Referenced by SCIPsetHmaxOptcumulative().