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 */
107 SCIP_Real slackvarcoef; /**< the initial objective coefficient of the slack variables in the subproblem */
108 SCIP_Real maxslackvarcoef; /**< the maximal objective coefficient of the slack variables in the subproblem */
109 SCIP_Bool checkconsconvexity; /**< should the constraints of the subproblems be checked for convexity? */
115 SCIP_HASHMAP* mastervarsmap; /**< hash map for the master variables from the subscip to the master */
121 SCIP_SUBPROBLEMSOLVESTAT** solvestat; /**< storing the solving statistics of all the subproblems */
122 SCIP_Real* subprobobjval; /**< the objective value of the subproblem in the current iteration */
124 SCIP_Real* subproblowerbound; /**< a lower bound on the subproblem - used for the integer cuts */
128 SCIP_Bool* subprobisconvex; /**< is the subproblem convex? This implies that the dual sol can be used for cuts */
132 SCIP_Bool subprobscreated; /**< have the subproblems been created for this Benders' decomposition.
134 SCIP_Bool* mastervarscont; /**< flag to indicate that the master problem variable have been converted
137 SCIP_Bool* indepsubprob; /**< flag to indicate if a subproblem is independent of the master prob */
140 SCIP_Bool freesubprobs; /**< do the subproblems need to be freed by the Benders' decomposition core? */
141 SCIP_Bool masterisnonlinear; /**< flag to indicate whether the master problem contains non-linear constraints */
151 SCIP_Longint prevnlpiter; /**< number of LP iters at the previous call of the cut strengthening */
154 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) */
155 SCIP_Bool strengthenround; /**< flag to indicate whether a cut strengthening round is being performed */
158 int nstrengthenfails; /**< the number of calls to the strengthening round that fail to find cuts */
162 SCIP_Bool feasibilityphase; /**< is the Benders' decomposition in a feasibility phase, i.e. using slack variables */
172 SCIP_BENDERSCUTCUT** storedcuts; /**< array to store the data required to form a cut/constraint */
177/** statistics for solving the subproblems. Used for prioritising the solving of the subproblem */
185/** 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:169
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_misc.h:138
Definition: type_nlpi.h:67
Definition: struct_tree.h:142
Definition: struct_misc.h:79
Definition: struct_sol.h:74
Definition: struct_benders.h:188
Definition: struct_benders.h:179
Definition: struct_var.h:208
Definition: struct_scip.h:70
type definitions for Benders' decomposition methods
type definitions for Benders' decomposition cut
type definitions for clocks and timing issues