struct_benders.h
Go to the documentation of this file.
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
52 SCIP_DECL_BENDERSCOPY ((*benderscopy)); /**< copy method of Benders' decomposition or NULL if you don't want to copy your plugin into sub-SCIPs */
56 SCIP_DECL_BENDERSINITPRE((*bendersinitpre));/**< presolving initialization method for Benders' decomposition */
57 SCIP_DECL_BENDERSEXITPRE((*bendersexitpre));/**< presolving deinitialization method for Benders' decomposition */
58 SCIP_DECL_BENDERSINITSOL((*bendersinitsol));/**< solving process initialization method of Benders' decomposition */
59 SCIP_DECL_BENDERSEXITSOL((*bendersexitsol));/**< solving process deinitialization method of Benders' decomposition */
60 SCIP_DECL_BENDERSGETVAR((*bendersgetvar)); /**< returns the corresponding variable from the master or subproblem */
61 SCIP_DECL_BENDERSPRESUBSOLVE((*benderspresubsolve));/**< called prior to the subproblem solving loop */
62 SCIP_DECL_BENDERSCREATESUB((*benderscreatesub));/**< creates the Benders' decomposition subproblems */
63 SCIP_DECL_BENDERSSOLVESUBCONVEX((*benderssolvesubconvex));/**< the solving method for convex Benders' decomposition subproblems */
64 SCIP_DECL_BENDERSSOLVESUB((*benderssolvesub));/**< the solving method for the Benders' decomposition subproblems */
66 SCIP_DECL_BENDERSFREESUB((*bendersfreesub));/**< the freeing method for the Benders' decomposition subproblems */
67 SCIP_DECL_SORTPTRCOMP((*benderssubcomp)); /**< a comparator for defining the solving order of the subproblems */
69 SCIP_CLOCK* setuptime; /**< time spend for setting up this Benders' decomposition for the next stages */
80 SCIP_Bool shareauxvars; /**< should this Benders' share the highest priority Benders' auxiliary vars */
83 SCIP_Bool transfercuts; /**< should Benders' cuts generated in LNS heuristics be transferred to the main SCIP instance? */
87 int lnsmaxcallsroot; /**< maximum number of root node Benders' decomposition call in LNS heuristics */
90 SCIP_Bool updateauxvarbound; /**< should the auxiliary variable lower bound be updated by solving the subproblem? */
91 SCIP_Bool auxvarsimplint; /**< if subproblem objective is integer, then set the auxiliary variables as implint */
98 SCIP_Real slackvarcoef; /**< the initial objective coefficient of the slack variables in the subproblem */
99 SCIP_Real maxslackvarcoef; /**< the maximal objective coefficient of the slack variables in the subproblem */
100 SCIP_Bool checkconsconvexity; /**< should the constraints of the subproblems be checked for convexity? */
105 SCIP_HASHMAP* mastervarsmap; /**< hash map for the master variables from the subscip to the master */
111 SCIP_SUBPROBLEMSOLVESTAT** solvestat; /**< storing the solving statistics of all the subproblems */
112 SCIP_Real* subprobobjval; /**< the objective value of the subproblem in the current iteration */
114 SCIP_Real* subproblowerbound; /**< a lower bound on the subproblem - used for the integer cuts */
118 SCIP_Bool* subprobisconvex; /**< is the subproblem convex? This implies that the dual sol can be used for cuts */
122 SCIP_Bool subprobscreated; /**< have the subproblems been created for this Benders' decomposition.
124 SCIP_Bool* mastervarscont; /**< flag to indicate that the master problem variable have been converted
127 SCIP_Bool* indepsubprob; /**< flag to indicate if a subproblem is independent of the master prob */
130 SCIP_Bool freesubprobs; /**< do the subproblems need to be freed by the Benders' decomposition core? */
131 SCIP_Bool masterisnonlinear; /**< flag to indicate whether the master problem contains non-linear constraints */
141 SCIP_Longint prevnlpiter; /**< number of LP iters at the previous call of the cut strengthening */
144 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) */
145 SCIP_Bool strengthenround; /**< flag to indicate whether a cut strengthening round is being performed */
148 int nstrengthenfails; /**< the number of calls to the strengthening round that fail to find cuts */
152 SCIP_Bool feasibilityphase; /**< is the Benders' decomposition in a feasibility phase, i.e. using slack variables */
162 SCIP_BENDERSCUTCUT** storedcuts; /**< array to store the data required to form a cut/constraint */
168 /** statistics for solving the subproblems. Used for prioritising the solving of the subproblem */
176 /** 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:59
Definition: struct_benderscut.h:37
Definition: struct_misc.h:69
Definition: struct_var.h:198
Definition: struct_tree.h:132
Definition: struct_benders.h:48
Definition: struct_sol.h:64
Definition: struct_benders.h:37
Definition: struct_misc.h:128
Definition: struct_benders.h:169
SCIP_Bool benderscutsnamessorted
Definition: struct_benders.h:159
#define SCIP_DECL_BENDERSSOLVESUBCONVEX(x)
Definition: type_benders.h:250
type definitions for Benders' decomposition methods
type definitions for clocks and timing issues
type definitions for Benders' decomposition cut
Definition: struct_benders.h:178
common defines and data types used in all packages of SCIP
Definition: struct_clock.h:55