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? */
114 SCIP_HASHMAP* mastervarsmap; /**< hash map for the master variables from the subscip to the master */
120 SCIP_SUBPROBLEMSOLVESTAT** solvestat; /**< storing the solving statistics of all the subproblems */
121 SCIP_Real* subprobobjval; /**< the objective value of the subproblem in the current iteration */
123 SCIP_Real* subproblowerbound; /**< a lower bound on the subproblem - used for the integer cuts */
127 SCIP_Bool* subprobisconvex; /**< is the subproblem convex? This implies that the dual sol can be used for cuts */
131 SCIP_Bool subprobscreated; /**< have the subproblems been created for this Benders' decomposition.
133 SCIP_Bool* mastervarscont; /**< flag to indicate that the master problem variable have been converted
136 SCIP_Bool* indepsubprob; /**< flag to indicate if a subproblem is independent of the master prob */
139 SCIP_Bool freesubprobs; /**< do the subproblems need to be freed by the Benders' decomposition core? */
140 SCIP_Bool masterisnonlinear; /**< flag to indicate whether the master problem contains non-linear constraints */
150 SCIP_Longint prevnlpiter; /**< number of LP iters at the previous call of the cut strengthening */
153 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) */
154 SCIP_Bool strengthenround; /**< flag to indicate whether a cut strengthening round is being performed */
157 int nstrengthenfails; /**< the number of calls to the strengthening round that fail to find cuts */
161 SCIP_Bool feasibilityphase; /**< is the Benders' decomposition in a feasibility phase, i.e. using slack variables */
171 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
Definition: struct_scip.h:68
Definition: struct_benderscut.h:46
Definition: struct_misc.h:78
Definition: struct_var.h:207
Definition: struct_tree.h:141
Definition: struct_benders.h:57
Definition: struct_sol.h:73
Definition: struct_benders.h:46
Definition: struct_misc.h:137
Definition: struct_benders.h:178
SCIP_Bool benderscutsnamessorted
Definition: struct_benders.h:168
#define SCIP_DECL_BENDERSSOLVESUBCONVEX(x)
Definition: type_benders.h:259
type definitions for Benders' decomposition methods
type definitions for clocks and timing issues
type definitions for Benders' decomposition cut
Definition: struct_benders.h:187
common defines and data types used in all packages of SCIP
Definition: struct_clock.h:64