struct_benders.h
Go to the documentation of this file.
31/*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
61 SCIP_DECL_BENDERSCOPY ((*benderscopy)); /**< copy method of Benders' decomposition or NULL if you don't want to copy your plugin into sub-SCIPs */
65 SCIP_DECL_BENDERSINITPRE((*bendersinitpre));/**< presolving initialization method for Benders' decomposition */
66 SCIP_DECL_BENDERSEXITPRE((*bendersexitpre));/**< presolving deinitialization method for Benders' decomposition */
67 SCIP_DECL_BENDERSINITSOL((*bendersinitsol));/**< solving process initialization method of Benders' decomposition */
68 SCIP_DECL_BENDERSEXITSOL((*bendersexitsol));/**< solving process deinitialization method of Benders' decomposition */
69 SCIP_DECL_BENDERSGETVAR((*bendersgetvar)); /**< returns the corresponding variable from the master or subproblem */
70 SCIP_DECL_BENDERSPRESUBSOLVE((*benderspresubsolve));/**< called prior to the subproblem solving loop */
71 SCIP_DECL_BENDERSCREATESUB((*benderscreatesub));/**< creates the Benders' decomposition subproblems */
72 SCIP_DECL_BENDERSSOLVESUBCONVEX((*benderssolvesubconvex));/**< the solving method for convex Benders' decomposition subproblems */
73 SCIP_DECL_BENDERSSOLVESUB((*benderssolvesub));/**< the solving method for the Benders' decomposition subproblems */
75 SCIP_DECL_BENDERSFREESUB((*bendersfreesub));/**< the freeing method for the Benders' decomposition subproblems */
76 SCIP_DECL_SORTPTRCOMP((*benderssubcomp)); /**< a comparator for defining the solving order of the subproblems */
78 SCIP_CLOCK* setuptime; /**< time spend for setting up this Benders' decomposition for the next stages */
89 SCIP_Bool shareauxvars; /**< should this Benders' share the highest priority Benders' auxiliary vars */
92 SCIP_Bool transfercuts; /**< should Benders' cuts generated in LNS heuristics be transferred to the main SCIP instance? */
96 int lnsmaxcallsroot; /**< maximum number of root node Benders' decomposition call in LNS heuristics */
99 SCIP_Bool updateauxvarbound; /**< should the auxiliary variable lower bound be updated by solving the subproblem? */
100 SCIP_Bool auxvarsimplint; /**< if subproblem objective is integer, then set the auxiliary variables as implint */
104#if SCIP_DISABLED_CODE /* temporarily disabling support for multiple threads in Benders' decomposition */
109 SCIP_Real slackvarcoef; /**< the initial objective coefficient of the slack variables in the subproblem */
110 SCIP_Real maxslackvarcoef; /**< the maximal objective coefficient of the slack variables in the subproblem */
111 SCIP_Bool checkconsconvexity; /**< should the constraints of the subproblems be checked for convexity? */
117 SCIP_HASHMAP* mastervarsmap; /**< hash map for the master variables from the subscip to the master */
128 int* submastervarssize; /**< the size of the master problem variables array for each subproblem */
130 int* nsubmasterbinvars; /**< the number of binary master problem variables in each subproblem */
131 int* nsubmasterintvars; /**< the number of integer master problem variables in each subproblem */
133 SCIP_SUBPROBLEMSOLVESTAT** solvestat; /**< storing the solving statistics of all the subproblems */
134 SCIP_Real* subprobobjval; /**< the objective value of the subproblem in the current iteration */
136 SCIP_Real* subproblowerbound; /**< a lower bound on the subproblem - used for the integer cuts */
140 SCIP_Bool* subprobisconvex; /**< is the subproblem convex? This implies that the dual sol can be used for cuts */
144 SCIP_Bool subprobscreated; /**< have the subproblems been created for this Benders' decomposition.
146 SCIP_Bool subprobsinfeasible; /**< flag to indicate that infeasibility of at least one subproblem has
148 SCIP_Bool* mastervarscont; /**< flag to indicate that the master problem variable have been converted
151 SCIP_Bool* indepsubprob; /**< flag to indicate if a subproblem is independent of the master prob */
154 SCIP_Bool freesubprobs; /**< do the subproblems need to be freed by the Benders' decomposition core? */
155 SCIP_Bool masterisnonlinear; /**< flag to indicate whether the master problem contains non-linear constraints */
156 SCIP_BENDERSOBJTYPE objectivetype; /**< the objective type for the aggregation of the subproblems. */
166 SCIP_Longint prevnlpiter; /**< number of LP iters at the previous call of the cut strengthening */
169 char strengthenintpoint; /**< where should the strengthening interior point be sourced from ('l'p relaxation, 'f'irst solution, 'i'ncumbent solution, 'r'elative interior point, vector of 'o'nes, vector of 'z'eros) */
170 SCIP_Bool strengthenround; /**< flag to indicate whether a cut strengthening round is being performed */
173 int nstrengthenfails; /**< the number of calls to the strengthening round that fail to find cuts */
177 SCIP_Bool feasibilityphase; /**< is the Benders' decomposition in a feasibility phase, i.e. using slack variables */
187 SCIP_BENDERSCUTCUT** storedcuts; /**< array to store the data required to form a cut/constraint */
192/** statistics for solving the subproblems. Used for prioritising the solving of the subproblem */
200/** parameters that are set to solve the subproblem. This will be changed from what the user inputs, so they are stored
common defines and data types used in all packages of SCIP
Definition: struct_benders.h:58
SCIP_DECL_BENDERSCREATESUB((*benderscreatesub))
SCIP_DECL_BENDERSGETVAR((*bendersgetvar))
SCIP_DECL_BENDERSEXITSOL((*bendersexitsol))
SCIP_DECL_BENDERSSOLVESUB((*benderssolvesub))
SCIP_DECL_BENDERSINIT((*bendersinit))
SCIP_DECL_BENDERSINITPRE((*bendersinitpre))
SCIP_DECL_BENDERSFREESUB((*bendersfreesub))
SCIP_DECL_BENDERSPRESUBSOLVE((*benderspresubsolve))
SCIP_DECL_BENDERSCOPY((*benderscopy))
SCIP_DECL_SORTPTRCOMP((*benderssubcomp))
SCIP_DECL_BENDERSEXIT((*bendersexit))
SCIP_Bool benderscutsnamessorted
Definition: struct_benders.h:184
SCIP_DECL_BENDERSPOSTSOLVE((*benderspostsolve))
SCIP_DECL_BENDERSEXITPRE((*bendersexitpre))
SCIP_DECL_BENDERSFREE((*bendersfree))
SCIP_DECL_BENDERSINITSOL((*bendersinitsol))
SCIP_DECL_BENDERSSOLVESUBCONVEX((*benderssolvesubconvex))
Definition: struct_benders.h:47
Definition: struct_benderscut.h:47
Definition: struct_clock.h:65
Definition: struct_cons.h:47
Definition: struct_misc.h:139
Definition: type_nlpi.h:67
Definition: struct_tree.h:142
Definition: struct_misc.h:79
Definition: struct_sol.h:74
Definition: struct_benders.h:203
Definition: struct_benders.h:194
Definition: struct_var.h:262
Definition: struct_scip.h:72
type definitions for Benders' decomposition methods
type definitions for Benders' decomposition cut
type definitions for clocks and timing issues